0

我在将上述 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 元素的附加。

4

1 回答 1

0

由于提问者尚未在此处发布此内容:

很抱歉回答我自己的问题,但我想通了。这是因为

<xsl:apply-templates />

它在这里寻找

<xsl:template match="XML/forms/Id"> something </xsl:template>  

而且由于它没有被定义,它正在打印出任何存在的值。

所以我加了

<xsl:template match="XML/forms/Id"/>

删除带有值的 Text 元素的附加。

于 2013-05-04T12:19:35.453 回答