ThomasM: XSLT 1.0 Kompletten Inhalt aus XML löschen

Beitrag lesen

Hallo Julian,

wenn für diesen Fall der gesamte Totals-Knoten entfernt werden soll In meinem Fall muss ALLES sprich der komplette Inhalt entfernt werden, nicht nur der Knoten totals. -> Sprich, wenn der Betrag unter InvoiceTotal 0.000 ist, sollte im besten Fall gar kein XML erzeugt werden und falls doch soll kein Inhalt erstellt werden.

Ein Ansatz, der im 0-Fall <root/> ausgibt (ginge auch nur mit einem xsl:if und dann bleibt die Ausgabe bis auf die Deklaration leer):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

  <xsl:template match="@* | node()">
    <xsl:choose>
      <xsl:when test="//Totals/InvoiceTotal != 0">
        <xsl:copy>
          <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
      </xsl:when>
      <xsl:otherwise>
        <root/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

</xsl:stylesheet>

Mit XSLT 2.0/3.0 ließe sich xsl:result-document bemühen und ggf. gar keine Ausgabe erzeugen.

Grüße,
Thomas