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 ?

如何使用 drupal 6 中的自定义字段将自定义版本的节点/添加表单放在视图中?

vue3的根节点

关于xslt中的根节点

如何使用 XSLT 替换 XML 节点名称中的字符 - 更改根元素