xslt
andy
- xsl
Hallo,
versuche vergeblich folgendes zu lösen.
Ich habe ein xslt-schema geschrieben. er sucht in ein xml dokument nach <a> elemente und vor jedem <a> element soll ein <img> element eingefügt werden. Bis jetzt funktioniert es richtig, das Problem aber ist, dass jedes mal, wenn ich das xslt aufrufe, fügt es ein anderes <img> hinzu. Ich will aber das <img> nur einmal hinzufügen.
bsp:
<a href="blabla">Link</a>
xslt aufruf
<img scr="blabla><a href="blabla">link</a>
wenn ich xslt nochmal aufrufe kommt:
<img scr="blabla><img scr="blabla><a href="blabla">link</a>
wenn ich xslt nochmal aufrufe kommt:
<img scr="blabla><img scr="blabla><img scr="blabla><a href="blabla">link</a>
... usw
Wie kann ich dies Umgehen? So, dass ich sagen kann, wenn du einmal ein <img> vor dem <a> hinzugefügt hast dann tue nichts mehr.
Ich hoffe Sie haben mir verstanden.
vielen Dank für ihre hilfe,
mfg, Andy
Hallo Andy,
kannst Du mal schreiben wie Du das XSL formuliert hast ? Am besten das komplette XSL Es gibt da soviele Möglichkeiten.
Gruss
Marko
Hi Andy,
ungetesteter Pseudo-Code:
<xsl:for-each select="//a">
<xsl:when test="/preceding-sibling::img"></xsl:when>
xsl:otherwise<img...><xsl:copy-of select="."></xsl:otherwise>
</xsl:for-each>
Gruß, Dein Onkel
Hallo,
ein alternativer Vorschlag:
<xsl:template match="a">
<img.. /><xsl:copy-of select=".">
</xsl:template>
<xsl:template match="img/a">
<xsl:copy-of select=".">
</xsl:template>
Wenn das 2. Template passt wird es bevorzugt angewendet, da eingeschränkterer XPAth Ausdruck.
Gruss
Marko
Hi,
<xsl:template match="img/a">
Das a-Element ist kein Kind des img.
cu,
Andreas
Hallo Andreas,
<xsl:template match="img/a">
Das a-Element ist kein Kind des img.
Ups, da hast Du leider recht. Mit dem passenden XPath würde es aber vom Prinzip funktionieren.
Gruss
Marko
Hallo,
Ich habe ein xslt-schema geschrieben.
Du meinst einen XSL-Stylesheet. (?)
er sucht in ein xml dokument nach <a> elemente und vor jedem <a> element soll ein <img> element eingefügt werden.
Normalerweise:
<xsl:template match="a">
<img ... /><a ... > ... </a>
</xsl:template>
Bis jetzt funktioniert es richtig, das Problem aber ist, dass jedes mal, wenn ich das xslt aufrufe, fügt es ein anderes <img> hinzu.
Das verstehe ich nicht. Was bedeutet du rufst das XSL nochmals auf?
Grüße
Thomas