渲染XML时出现XSLT问题

时间:2013-05-03 20:54:20

标签: xml xslt

我在使用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元素的追加。

1 个答案:

答案 0 :(得分:0)

由于提问者尚未发布此信息:

  

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

<xsl:apply-templates />
  

这里正在寻找

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

由于它没有被定义,它正在打印出那里的值。

     

所以我添加了

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

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