XSLT - Separatoren einfügen
Wolfgang Schlaupitz
- xsl
Hallo
Ich möchte Elemente durch einen Separator trennen.
XML:
<vater>
text(<kind id="1">text</kind>)Text(<kind id="2">Text</kind><kind id="3">Text</kind><kind id="4">Text</kind><kind id="5">Text</kind>
<kind id="6">Text</kind><kind id="7">Text</kind>)Text(Text<kind id="8">Text</kind>
<kind id="9">Text</kind><kind id="10">Text</kind><kind id="11">Text</kind><kind id="12">Text</kind>).
</vater>
Der Separator soll nur dann eingfügt werden, wenn auf ein <kind>-Element
ein weiteres folgt.
XSLT:
...
<xsl:when test="following-sibling::kind">
...
<xsl:value-of select="." />xsl:text; </xsl:text>
...
Ergebnis:
<vater>
text(<kind id="1">text</kind>; )Text(<kind id="2">Text</kind>; <kind id="3">Text</kind>; <kind id="4">Text</kind>; <kind id="5">Text</kind>; 
<kind id="6">Text</kind>; <kind id="7">Text</kind>; )Text(Text<kind id="8">Text</kind>; 
<kind id="9">Text</kind>; <kind id="10">Text</kind>; <kind id="11">Text</kind>; <kind id="12">Text</kind>).
</vater>
Problem:
Es kommt vor, dass in der Ausgabe zwischen den <kind>-Elementen Text steht. Zusammenhängende <kind>-Elemente sind durch runde Klammern begrenzt.
Der Separtator so nur in diesem Fall gesetzt werden:
...</kind><kind...
=>...</kind>; <kind...
und nicht bei
</kind>)Text(Text<kind...
(falsches ergebnis: ...</kind>; )Text(Text<kind...)
Kann mir hierbei jemand weiterhelfen.
Danke mal.
Gruss
Wolfgang
Hallo,
Ich möchte Elemente durch einen Separator trennen.
Es kommt vor, dass in der Ausgabe zwischen den <kind>-Elementen Text steht. Zusammenhängende <kind>-Elemente sind durch runde Klammern begrenzt.
Der Separtator so nur in diesem Fall gesetzt werden:
...</kind><kind...
=>...</kind>; <kind...
und nicht bei
</kind>)Text(Text<kind...
(falsches ergebnis: ...</kind>; )Text(Text<kind...)Kann mir hierbei jemand weiterhelfen.
test="following-sibling::kind and not(starts-with(following::text(), ')'))"
Grüße
Thomas
Danke schön,
funktioniert so wunderbar!
Gruss
Wolfgang