我在将上述 xml 用于 xslt 时遇到问题。在代码中,我想打印 Id 作为表单的属性。它正在打印 Id 作为属性以及节点表单的值。
它将输出打印为:
<forms id="AB1234">AB1234 </forms>
当我显然不需要打印值时。这有什么问题?
xml.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xsl.xsl"?>
<XML>
<forms>
<Id>AB1234</Id>
<form>
<Copy>1</Copy>
<Fields>
</Fields>
</form>
</forms>
</XML>
xsl.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output omit-xml-declaration="yes" method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="/">
<xsl:for-each select="XML/forms">
<forms id = "{(./Id)}">
<xsl:apply-templates />
</forms>
</xsl:for-each>
</xsl:template>
<xsl:template match="form">
Something
</xsl:template>
回答 :
很抱歉回答我自己的问题,但我想通了。这是因为
<xsl:apply-templates />
它在这里寻找
<xsl:template match="XML/forms/Id"> something </xsl:template>
而且由于它没有被定义,它正在打印出任何存在的值。
所以我加了
<xsl:template match="XML/forms/Id"/>
删除带有值的 Text 元素的附加。