juls_pro_37: XSLT 1.0: Wenn 0 dann löschen

Hi,

würde gerne die "GTIN" unter "Item" löschen, wenn diese "0“ ist.

Habe es wie folgt gelöst, denke aber, dass es einfacher/kürzer gehen sollte.

XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<SALESINVOICE>
	<LineInformation>
		<Item>
			<LineNum>1</LineNum>
			<GTIN>1234567893695</GTIN>
		</Item>
	</LineInformation>
	<LineInformation>
		<Item>
			<LineNum>2</LineNum>
			<GTIN>0</GTIN>
		</Item>
	</LineInformation>
</SALESINVOICE>

XSLT:

<xsl:template match="node()|@*" name="identity">
		<xsl:copy>
			<xsl:apply-templates select="node()|@*"/>
		</xsl:copy>
	</xsl:template>
	
   <xsl:template match="Item">
    <xsl:copy>
      <xsl:choose>
        <xsl:when test="GTIN = 0">
          <xsl:apply-templates select="node()|@*" mode="exclude" />
        </xsl:when>
        <xsl:otherwise>
          <xsl:apply-templates select="node()|@*" />
        </xsl:otherwise>
      </xsl:choose>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="Item/GTIN" mode="exclude" />

  <xsl:template match="node()|@*" mode="exclude">
    <xsl:copy>
     <xsl:apply-templates select="node()|@*" mode="exclude" />
    </xsl:copy>
  </xsl:template>

Danke & LG Julian

akzeptierte Antworten

  1. Hallo Julian,

    würde gerne die "GTIN" unter "Item" löschen, wenn diese "0“ ist.

    Habe es wie folgt gelöst, denke aber, dass es einfacher/kürzer gehen sollte.

    Ja, geht einfacher und kürzer:

    <?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:copy>
          <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
      </xsl:template>
    
      <xsl:template match="Item/GTIN[. = 0]"/>
    
    </xsl:stylesheet>
    

    Grüße,
    Thomas