XSLT样式表需要空的成对标记,而不是空值的自动关闭标记
我的输入有时有价值,有时没有价值。如value1=ABC或value1=“” 在xsl转换过程中,我的代码如下所示XSLT样式表需要空的成对标记,而不是空值的自动关闭标记,xslt,Xslt,我的输入有时有价值,有时没有价值。如value1=ABC或value1=“” 在xsl转换过程中,我的代码如下所示 <element name="test"><xsl:value-of select="$value1"/><element> 当值存在时,上述代码的输出为 <element name="test">ABC</element> ABC 当该值不存在时,输出为 <element name="test"/>
<element name="test"><xsl:value-of select="$value1"/><element>
当值存在时,上述代码的输出为
<element name="test">ABC</element>
ABC
当该值不存在时,输出为
<element name="test"/>
现在,我想让它看起来像
<element name="test"></element>
而不是
<element name="test"/>
是否有可能获得所需的输出?
如果是,那么如何操作?尝试添加
例如
XSLT1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:variable name="test1"/>
<xsl:variable name="test2" select="'value'"/>
<element name="test1"><xsl:value-of select="$test1"/></element>
<element name="test2"><xsl:value-of select="$test2"/></element>
</xsl:template>
</xsl:stylesheet>
生成(应用于任何XML实例时):
价值
@SAM-这只会在少数情况下导致问题(例如,如果您的任何元素名称与HTML元素相同,或者您正在输出处理指令)。有关更多详细信息,请参阅。在这个线程()中,Michael Kay给出了一个有趣的答案:“XSLT输出一个结果树,而不是输出标记[…],序列化程序将决定是否使用或。在XML中,这两种形式完全相同,因此XML的任何使用者都将接受[…]在这种情况下,官方的答案是编写自己的序列化程序。”
<element name="test1"></element>
<element name="test2">value</element>