我应该为XML文档编写一个XSLT,如果它没有元素参数,XSLT必须考虑一个空值。输出必须是XML文档,其中原始xml文档中没有值的元素必须打印为<tagName>Null</tagName>
这是xml文档
<salesOrderRequest>
<invoiceNo>1245</invoiceNo>
<PizzaType/>
<Price>1099</Price>
<Discount>234</Discount>
</salesOrderRequest>
这是我的xslt
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XMLTransform">
<xsl:template match="/">
<xsl:for-each select="/salesOrderRequest">
<xsl:value-of select="invoiceNo"/>
<xsl:value-of select="PizzaType"/>
<xsl:value-of select="Price"/>
<xsl:value-of select="Discount"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
<salesOrderRequest>
<invoiceNo>1245</invoiceNo>
<PizzaType>Null</PizzaType>
<Price>1099</Price>
<Discount>234</Discount>
</salesOrderRequest>
答案 0 :(得分:1)
在XSLT 2.0或3.0中,
试
<xsl:value-of select="if (normalize-space(PizzaType))
then PizzaType
else 'Null' "/>
或(如果您不想接受<PizzaType> </PizzaType>
等同于<PizzaType/>
)
<xsl:value-of select="if (PizzaType ne '')
then PizzaType
else 'Null' "/>
或
<xsl:value-of select="(PizzaType[. ne ''], 'Null')[1]"/>
如果您需要XSLT 1.0中的解决方案,则应该以这种方式标记您的问题。
答案 1 :(得分:1)
尝试:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XMLTransform">
<xsl:template match="/">
<xsl:apply-templates select="/salesOrderRequest/*"/>
</xsl:template>
<xsl:template match="salesOrderRequest/*" priority="1">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="salesOrderRequest/*[.='']" priority="2">
<xsl:text>null</xsl:text>
</xsl:template>
</xsl:stylesheet>