我有一个XML -
<root>
<gereratorList>
<generator>
<id>1</id>
<A>123</A>
</generator>
<generator>
<id>10</id>
<A>456</A>
</generator>
<generator>
<id>111</id>
<A>789</A>
</generator>
</gereratorList>
</root>
我想通过XSL将这个XML转换为另一个XML。生成的XML应该是这样的 -
<parent>
<child>
<test>456</test>
<child>
</parent>
但是我在转换后得到以下XML -
<parent>
<child>
<test>123 456 789</test>
<child>
</parent>
我的XSL如下 -
<?xml version="1.0" ?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:element name="parent">
<xsl:apply-templates select="root/generatorList/generator"/>
</xsl:element>
</xsl:template>
<xsl:template match="root/generatorList/generator">
<xsl:element name="child">
<xsl:if test="/root/generatorList/generator/id='10'">
<xsl:element name="test">
<xsl:value-of select="A"/>
</element>
</xsl:if>
</element>
</template>
</stylesheet>
请帮忙。
答案 0 :(得分:0)
请改用以下内容:
注意: gererator
(在XML中)与XSLT的拼写差异。
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<parent>
<child>
<test>
<xsl:value-of select="root/gereratorList/generator[id = '10']/A"/>
</test>
</child>
</parent>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
@Gaurav,
请使用以下XSL
<?xml version="1.0" ?>
<xsl:stylesheet version="2.0"`xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="generator">
<xsl:choose>
<xsl:when test = "id = 10">
<parent>
<child>
<test>
<xsl:value-of select ="A"/>
</test>
</child>
</parent>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
答案 2 :(得分:0)
您的xsl无效 这个是正确的,并给你预期的结果
<?xml version="1.0" ?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:element name="parent">
<xsl:apply-templates select="/root/gereratorList/generator"/>
</xsl:element>
</xsl:template>
<xsl:template match="generator">
<xsl:if test="id='10'">
<xsl:element name="child">
<xsl:element name="test">
<xsl:value-of select="A"/>
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
正如您所看到的,几乎没有差异。
你的错误是:
结束标记不正确(</element>
代替</xsd:element>
)
如果test不在当前生成器节点上,但在所有节点上