Text in Mixed Content erfassen
MankoFranko
- xsl
Hallo, ich habe folgendes XPath Problem:
Fall 1:
Die betreffende XML-Struktur sieht wie folgt aus:
<para>
Hier steht Text
<Special>
Hier steht besonderer Text
</Special>
</para>
In diesem Fall soll über das Stylesheet ein <br/> vor dem "besonderen Text" eingefügt werden. Das Para bricht ja sowieso um:
<xsl:template match="para">
<p>
xsl:apply-templates/
</p>
</xsl:template>
<xsl:template match="Special">
<br/>
xsl:apply-templates/
</xsl:template>
-----------------------------------------------
Fall 2:
Fehlt allerdings der normale Text vor dem besonderen, der XML-Auschnitt wäre also
<para>
<Special>
Hier steht besonderer Text
</Special>
</para>
dann soll kein <br/> erfolgen, da sonst der Abstand zum vorhergehenden Inhalt zu groß werden würde.
-----------------------------------------------
Ich habe schon versucht, im Special-Template das Statement
<xsl:if test="./preceding-sibling">
<br/>
</xsl:if>
anzuwenden. Dummer- allerdings auch logischerweise erkennt dieses einfachen Text nicht als Node und läßt das <br/> auch im ersten Fall weg.
Hat jemand eine Idee, wie ich rausfinden kann, ob vor einem Element noch einfacher Text kommt?
Danke für Eure Hilfe!
Hallo,
Ich habe schon versucht, im Special-Template das Statement
<xsl:if test="./preceding-sibling">
<br/>
</xsl:if>anzuwenden. Dummer- allerdings auch logischerweise erkennt dieses einfachen Text nicht als Node und läßt das <br/> auch im ersten Fall weg.
Hat jemand eine Idee, wie ich rausfinden kann, ob vor einem Element noch einfacher Text kommt?
Was mir jetzt dazu einfällt ist folgendes:
<xsl:template match="Special">
<xsl:if test="string-length(substring-before(parent::*, current())) > 1">
<br />
</xsl:if>
xsl:apply-templates/
</xsl:template>
HTH
Grüße
Thomas