我在使用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元素的追加。
答案 0 :(得分:0)
由于提问者尚未发布此信息:
很抱歉回答我自己的问题,但我明白了。这是因为
<xsl:apply-templates />
这里正在寻找
<xsl:template match="XML/forms/Id"> something </xsl:template>
由于它没有被定义,它正在打印出那里的值。
所以我添加了
<xsl:template match="XML/forms/Id"/>
删除带有值的Text元素的追加。