Thomas J.S.: leere Tags XSLT

Beitrag lesen

Hallo,

ist es möglich, dass man leere Tags gar nicht erst ausgibt!!

Ist das eine Frage? ;-)

Habe ein Schema in XSLT und möchte nicht, dass die leeren Tags bei der Ausgabe angezeigt werden.

Lösungsvorschlag eines Kollegen war:
<xsl:output omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()">
  <xsl:if test="count(descendant::text()[string-length(normalize-space(.))>0]|@*)">

count() bringt hier so nichts, weil das Ergebnis immer zurtreffen wird. count() gibt die anzahl der Knoten um Knotenset zurück, d.h. auch wenn es keinen Knoten gibt, gibt es ein Ergebnis, denn auch 0 ist ein Ergebnis.

Mache es entweder mit "count( ... ) != 0" was ziemlich schlechter Stil ist, oder so:

<xsl:template match="@* | node()[current() != '']">
 xsl:copy
  <xsl:apply-templates select="@*" />
  <xsl:apply-templates select="node()[current() != '']" />
 </xsl:copy>
</xsl:template>

das <xsl:strip-space elements="*"/> sorgt bereits dafür, dass bei Elementen die nur Leerzeichen enthalten, diese entfernt werden.

Grüße
Thomas