XSLT 中的自定义根节点
Posted
技术标签:
【中文标题】XSLT 中的自定义根节点【英文标题】:Custom Root Node in XSLT 【发布时间】:2012-10-06 16:29:56 【问题描述】:我想以自定义方式在 xslt 1.0 中创建根节点
预期
"
实际
"
提前感谢您的帮助
问候 拉梅什库马尔·辛格
【问题讨论】:
【参考方案1】:就这么简单:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<TESTROOT xmlns="http://www.example.org/TESTXMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/TESTXMLSchema TESTEntry.xsd">
The results of your processing here ...
</TESTROOT>
</xsl:template>
</xsl:stylesheet>
当此转换应用于任何 XML 文档(未使用)时,会产生所需的结果:
<TESTROOT xmlns="http://www.example.org/TESTXMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/TESTXMLSchema TESTEntry.xsd">
The results of your processing here ...
</TESTROOT>
【讨论】:
@RameshSingh,“不工作”是什么意思,只需复制并粘贴答案中的转换(正如我在验证运行转换会产生所需结果时所做的那样)并运行转换 -在任何源 XML 文档上——然后任何兼容的 XSLT 处理器都会产生在这个答案中提供的结果(再次从运行转换的实际结果复制并粘贴到这个答案中)。我总是测试我的代码并验证它是否确实产生了想要的结果。 嗨,我通过 biztalk 管道组件使用 xslt 转换。当它通过解析器自动解析时,它会返回实际结果。 @RameshSingh,BizTalk 不是 XSLT 处理器。您必须阅读文档并查看适用于 XSLT 转换的限制/约定。我不是 BizTalk 专家,但知道我的 XSLT 知识。我已经验证了我正在使用的所有 10 个不同的 XSLT 处理器都产生相同的需求,正确的结果——MSXML 3、4、6、Saxon 6.5.4、Saxon 9.1.05、AltovaXML (XML-SPY)——两者适用于 XSLT 1.0 和 XSLT 2.0、.NET XslCompiledTransform、.NET XslTransform、XQSharp (XMLPrime)。 我使用 Visual Studio 测试得到实际结果 @RameshSingh,很高兴我的回答对您有用。请您接受它(通过单击答案旁边的复选标记)吗?以上是关于XSLT 中的自定义根节点的主要内容,如果未能解决你的问题,请参考以下文章
带有 RepositoryRestResource-s 和常规控制器的 Spring REST HATEOAS 中的根请求的自定义响应
XSLT:如何将节点值传递给自定义 xsl:function ?