XSLT 1.0: Wenn 0 dann löschen
 juls_pro_37
 juls_pro_37
    
    
      - xml
- xsl
- 2 ThomasM
 nicht angemeldet
 nicht angemeldetHi,
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
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