<xsl:apply-templates> nur ab einer bestimmten Stelle
frage
- xsl
0 Thomas J.S.0 frage0 Thomas J.S.0 frage
Hallo, eine Frage, vielleicht kennt sich jemand ja aus:
Habe ein Tag in meiner xml, der aus viel Text besteht und innerhalb dieses Textes können solche Tags wie img vorkommen, die auch richtig dargestellt werden. Nun soll nicht der ganze Text, sondern ab einer bestimmten Stelle dargestellt werden, klappt mit <xsl:value-of select="substring-after ($text, '#' )"/> wunderbar. Allerdings können in dem restlichen Text noch imgs vorkommen, daher xsl:apply-templates, da ich noch ein img-template habe. Das ganze sieht folgendermaßen aus:
<xsl:template match="text">
<xsl:variable name="text" select="." />
<xsl:value-of select="substring-after ($text, '#' )"/>
xsl:apply-templates/
</xsl:template>
Nun aber werden ALLE imgs dargestellt, die im Text vorkommen können, und ich brauche nur die, die erst nach dem Zeichen # stehen. Weiß jemand, wie das geht? Habe noch mehrere mögliche Tags, nicht nur img, brauche also eine allgemeinere Lösung.. bin für jede Hilfe dankbar!
Hallo,
Nun aber werden ALLE imgs dargestellt, die im Text vorkommen können, und ich brauche nur die, die erst nach dem Zeichen # stehen. Weiß jemand, wie das geht? Habe noch mehrere mögliche Tags, nicht nur img, brauche also eine allgemeinere Lösung.. bin für jede Hilfe dankbar!
Du kannst es so versuchen:
<xsl:apply-templates select="substring-after ($text, '#')" />
Grüße
Thomas
Hallo Thomas,
bekomme leider folgender Fehlermeldung:
[ERROR] #STRING kann nicht in NodeList konvertiert werden!
Hallo,
bekomme leider folgender Fehlermeldung:
Ich verstehe das Problem.
Was steht noch in diesem XML und XSL, bist du vielleicht in einem Bereits in einem CDATA-Bereich?
Sonst mus du anderwertig überprüfen ob vor einem image/img? irgendwo im Text ein '#' steht.
Grüße
Thomas
Hallo Thomas,
vielen Dank für Deine Ratschläge, also ich habe so eine ähnliche Struktur:
<struktur>
<element>
<c>text</c>
<text>langer text<img scr=""></img>#noch mehr text<img scr=""></img>#<img scr=""></img>#</text>
</element>
<element>
<c>text</c>
<text>langer text<img scr=""></img>#noch mehr text<img scr=""></img>#<img scr=""></img>#</text>
</element>
<element>
<c>text</c>
<text>langer text<img scr=""></img>#noch mehr text<img scr=""></img>#<img scr=""></img>#</text>
</element>
</struktur>
Es sollen nur die imgs des Elementes <text> dargestellt werden, die nach dem 1. Zeichen # vorkommen.. ich habe für Elemente element, c, text, img jeweils ein template