在 xslt 转换中保留 xml header

Preserving the xml header in an xslt transform

我正在使用 xslt(特别是 xsltproc,但应该无关紧要,对吧?)对 xml 文件进行一些小的转换。使用输出标签,我可以控制诸如编码之类的东西,或者它是否将成为一个独立的 xml 文件。例如:

<xsl:output indent="yes" encoding="UTF-8"/>

但是如果我想保留 编码,或者如果它在不同的输入上是独立的怎么办?其中一些输入可能采用不同的编码,或者一些独立的 xml 文件,有些则没有。由于 xml 文件的 header 标记的处理方式不同,不是树的一部分,我无法访问它的任何内容。有没有办法做到这一点,或者这超出了 xslt 的范围?

它超出了 XSLT 的范围 - XSLT 对已解析文档的 XDM(XPath 数据模型)树结构进行操作,它不知道原始 XML(甚至树最初是从字节流解析还是以编程方式构造),特定字符是否表示为文字(>)、实体引用(&gt;)或字符引用(&#x3E;) 、开始标记内属性之间的空格、属性出现的顺序等。