【发布时间】:2018-11-21 23:34:57
【问题描述】:
我需要处理 XSLT 代码,如果 XSL 标记元素的属性值为 enable="yes",则必须从输出中删除相应的标记。
我的输入xsl文件如下,
<xsl:stylesheet version = "1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<xsl:for-each select="Node/Node_1">
<node>
<line enable="false"><xsl:value-of select="Line"/></line>
<text><xsl:value-of select="Text"/></text>
<desc enable="false"><xsl:value-of select="Desc"/></desc>
<cust><xsl:value-of select="Cust"/></cust>
</node>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
然后输出数据必须删除相应的具有属性 enable="false" 的 XSL 标记,
<xsl:stylesheet version = "1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<xsl:for-each select="Node/Node_1">
<node>
<text><xsl:value-of select="Text"/></text>
<cust><xsl:value-of select="Cust"/></cust>
</node>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
通过XSLT本身是否可行,将xsl文件视为XML并对其进行处理以删除具有enable =“false”属性的标签。或者有没有更好的方法来完成它?
【问题讨论】:
-
是的,您可以这样做,但是您是否考虑过使用 XSLT 2.0 标准属性
use-when="false()"代替?这样您就不需要进行预处理,XSLT 处理器会为您完成。