XSLT / xsltproc - 不要改变属性的顺序

时间:2021-06-22 04:44:02

标签: xml xslt

我想使用 XSLT 将 XML 文档转换为 XML 文档。一些节点的格式如下:

<node attrZ="..."
      attrB="Hello 'FooBar'"
      xmlns="..."/>

在使用 xsltproc 的转换过程之后,它看起来像:

<node xmlns="..." attrB="Hello &apos;FooBar&apos;" attrZ="..."/>

这发生在所有节点上:

<xsl:output method="xml" version='1.0' indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="node() | @*">
  <xsl:copy>
   <xsl:apply-templates select="node() |@*"/>
  </xsl:copy>
</xsl:template>

是否可以抑制属性的重新格式化(顺序、换行符、...)、属性中的字符转义或更改“untouch”/复制节点的缩进?

谢谢

安德烈亚斯

1 个答案:

答案 0 :(得分:3)

答案是否定的。 XSLT 处理器不知道属性最初出现的顺序(XML 解析器不提供此信息),因此它不可能保留此顺序。

这里的撇号转义有点笨拙(因为没有必要),不同的 XSLT 处理器可能更聪明;类似地,其他处理器的缩进算法可能更聪明,但基本上这是您无法控制的 - 这应该无关紧要。

相关问题