【问题标题】:Preserving the xml header in an xslt transform在 xslt 转换中保留 xml 标头
【发布时间】:2015-03-20 20:05:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

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

    【讨论】:

    • 有道理。谢谢。遗憾的是,这个元数据无论如何都可以/应该存储在某个地方。
    • @Goens XSLT 是一种 XML 处理工具,而不是文本处理工具。不能保留这些细节并不重要,因为它们是任何兼容的 XML 解析器都会隐藏的细节 - 输出 XML 的下游消费者不关心它是否是&amp;gt;&amp;#x3e;,因为这两种表示是等价的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 2012-11-23
    • 1970-01-01
    • 2012-04-14
    相关资源
    最近更新 更多