使用 xsl 复制 xml 声明

Copying xml declaration with xsl

提问人:Questioner 提问时间:8/23/2023 更新时间:8/23/2023 访问量:32

问:

如何使用xsl复制xml声明(版本,编码,独立)? 我不知道输入文档中的独立编码是什么,但在输出中应该是相同的。

无法从输入中复制信息。<xsl:output/>

XML XSLT 声明

评论

0赞 michael.hor257k 8/23/2023
AFAIK,无法复制 XML 声明,因为它不存在于解析的树中(它仅由解析器用于正确解析 XML)。而且您无论如何都不想复制它,因为它可能会使您的结果不可用 - 例如,当您的输出编码与原始编码不同时(您可能注意到,输出编码不能是动态计算的值)。
0赞 Martin Honnen 8/23/2023
XSLT 本身在其数据模型中没有 XML 输入声明的任何表示形式,因此 XSLT 没有详细信息。根据您的编程环境,一些 DOM 表示形式,例如 Microsoft .NET 的 DOM 和 learn.microsoft.com/en-us/dotnet/api/...存储此类详细信息,因此,如果从 DOM 输入树中使用 .NET 代码运行 XSLT,则可以读出 XML 声明属性,并使用它们来序列化转换结果。如何执行此操作取决于用于 .NET 的转换/序列化 API。
0赞 Martin Honnen 8/24/2023
自 Java 14 以来,Java SAX API 似乎也报告了 XML 声明 docs.oracle.com/en/java/javase/17/docs/api/java.xml/org/xml/sax/...。这样,在该平台上,您可以读出输入编码,然后确保输出序列化使用相同的编码。但是您需要主要从 Java 代码中执行此操作,这不是 XSLT 提供的功能。

答: 暂无答案