我的XML:
<?xml version="1.0" encoding="utf-8"?>
<Items>
<Item>
<Name>Ram-345D</Name>
<Price>$21.00</Price>
<Warranty>2 Years </Warranty>
</Item>
</Items>
我的XSL:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Items">
<xsl:copy-of select="/Item"/>
</xsl:template>
</xsl:stylesheet>
我想选择Item
的所有节点和元素并显示它们。但我的选择副本不起作用。我做错了什么?
答案 0 :(得分:1)
您可以按如下方式调整XSLT:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="/Items">
<xsl:copy-of select="Item"/>
</xsl:template>
</xsl:stylesheet>
按照您的要求复制Item
元素:
<?xml version="1.0" encoding="UTF-8"?>
<Item>
<Name>Ram-345D</Name>
<Price>$21.00</Price>
<Warranty>2 Years </Warranty>
</Item>
但请注意,如果您有多个Item
元素,那么您的输出将不是格式良好的XML文档,因为它缺少单个根元素。
相反,请考虑从身份转换开始,并为那些您希望做的事情而不是完全复制的元素重写。
例如,此XSLT会将所有内容复制到输出中,但名为“Ram-345D”的Price
的{{1}}除外,它将更改为“Free”:
Item
答案 1 :(得分:0)
你的xpath错了。这应该是
<xsl:copy-of select="/Item"/>
此;
<xsl:copy-of select="//Item"/>
然后你将获得带有元素的Items及其子元素
<?xml version="1.0" encoding="UTF-8"?>
<Item>
<Name>Ram-345D</Name>
<Price>$21.00</Price>
<Warranty>2 Years </Warranty>
</Item>