XSLT - 如果value =“000000”,则不显示标记

时间:2016-12-20 10:42:24

标签: xml xslt sap

我正在将SAP IDOC转换为更易读的XML格式。

我有以下XSLT,它隐藏空值(CHARG,VFDAT)

<Product>
        <OrderLineNo><xsl:value-of select="VGPOS"/></OrderLineNo>
        <ProductDescription><xsl:value-of select="ARKTX"/></ProductDescription>
        <ProductCode><xsl:value-of select="MATNR"/></ProductCode>
        <xsl:if test="EAN11">
            <Barcode><xsl:value-of select="EAN11"/></Barcode>
        </xsl:if>
        <QuantityDelivered><xsl:value-of select="LFIMG"/></QuantityDelivered>
        <SalesUnit><xsl:value-of select="VRKME"/></SalesUnit>
        <xsl:if test="CHARG">
            <Batch><xsl:value-of select="CHARG"/></Batch>
        </xsl:if>
        <xsl:if test="VFDAT">
            <ExpiryDate><xsl:value-of select="VFDAT"/></ExpiryDate>
        </xsl:if>
    </Product>

这将获得以下XML输出,该输出隐藏了源XML文档中不存在的VFDAT和EAN11。

我还希望在值&lt;时隐藏VFDAT。 1。

我该怎么做?

<Product>
 <OrderLineNo>000010</OrderLineNo>
 <ProductDescription>BARBER'S CATALOGUE</ProductDescription>
 <ProductCode>000000000030199850</ProductCode>
 <QuantityDelivered>20.000</QuantityDelivered>
 <SalesUnit>EA</SalesUnit>
 <ExpiryDate>00000000</ExpiryDate>
</Product>

谢谢。

1 个答案:

答案 0 :(得分:1)

尝试将其作为,

如果您使用的是XSLT 2.0,则应该可以使用

<xsl:if test="VFDAT gt 0">
    <ExpiryDate><xsl:value-of select="VFDAT"/></ExpiryDate>
</xsl:if>

如果是XSLT 1.0,

<xsl:if test="VFDAT &gt; 0">
    <ExpiryDate><xsl:value-of select="VFDAT"/></ExpiryDate>
</xsl:if>

<xsl:if test="VFDAT > 0">
    <ExpiryDate><xsl:value-of select="VFDAT"/></ExpiryDate>
</xsl:if>