Xml XSLT-未设置根元素
在我的XSLT上获取根元素未设置错误 XML输入:Xml XSLT-未设置根元素,xml,xslt,Xml,Xslt,在我的XSLT上获取根元素未设置错误 XML输入: <?xml version="1.0" encoding="utf-8"?> <Customer count="1"> <Record id="123"> <Data id="123-00">John Smith</Data> </Record> <Record id="456"> <Data id="123-00">M
<?xml version="1.0" encoding="utf-8"?>
<Customer count="1">
<Record id="123">
<Data id="123-00">John Smith</Data>
</Record>
<Record id="456">
<Data id="123-00">Mark Doe</Data>
</Record>
</Customer>
约翰·史密斯
马克·多伊
期望输出:
<Customer>
<Record>
<Name>John Smith<Name>
</Record>
<Record>
<Name>Mark Doe</Name>
</Record>
</Customer>
约翰·史密斯
马克·多伊
到目前为止我所拥有的:
<xsl:template match="/Customer/Record">
<xsl:for-each select="Data">
<Customer>
<Record>
<Name><xsl:value-of select="@id='123-00'"/></Name>
</Record>
</Customer>
</xsl:for-each>
</xsl:template>
我尝试在没有for循环代码的情况下使用
template match=“/”
和select=“Customer/Record/Name[@id='123-00']”的值,它可以工作。但是我知道这不是编码它的最佳方式。如果要将数据元素转换为名称元素并删除任何属性,请使用
<xsl:template match="Data">
<Name>
<xsl:value-of select="."/>
</Name>
</xsl:template>
对于其他元素,您似乎希望复制它们,而不复制它们的属性,因此添加一个模板
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
足够了:如果要将数据
元素转换为名称
元素并删除任何属性,请使用
<xsl:template match="Data">
<Name>
<xsl:value-of select="."/>
</Name>
</xsl:template>
对于其他元素,您似乎希望复制它们,而不复制它们的属性,因此添加一个模板
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
足够了:要使代码产生所需的输出,您需要:
使您的模板与客户匹配,而不是与记录匹配李>
将Customer
元素移到xsl:for-each
指令之外李>
获取数据
节点的实际值(现在只有布尔测试):
要使代码产生所需的输出,您需要:
使您的模板与客户匹配,而不是与记录匹配李>
将Customer
元素移到xsl:for-each
指令之外李>
获取数据
节点的实际值(现在只有布尔测试):
成功了!谢谢我不知道从哪里开始for循环。它成功了!谢谢我不知道从哪里开始for循环。当我尝试template match=“Data”时,我仍然得到一个根元素not set错误。然后我使用了template match=“/Customer”。当我尝试template match=“Data”时,我仍然得到一个根元素not set错误。然后我使用模板匹配=“/Customer”。