2

我正在尝试对 Microsoft Visual Studio 的 vcproj 进行排序,以便在从项目中删除文件后,差异会显示一些有意义的东西。除了排序之外,我还想保持一切完好无损,包括空格。输入看起来像

空间<File

空间空间RelativePath="filename"

空间空间>

...

下面的 xslt 片段可以在元素周围添加空格,但我不知道如何处理属性周围的空格,所以我的输出看起来像

空间<File RelativePath="filename">

我用于 msxsl 4.0 处理器的 xslt:

<xsl:for-each select="File">

<xsl:sort select="@RelativePath"/>

<xsl:value-of select="preceding-sibling::text()[1]"/>

<xsl:copy>

<xsl:for-each select="text()|@*">

<xsl:copy/>

</xsl:for-each>

4

2 回答 2

1

这些空间在 XML 中总是微不足道的,我相信对于任何 XML/XSLT 库都没有以通用方式控制这种行为的选项。

于 2011-04-30T18:19:08.007 回答
1

XSLT 处理输入 XML 的树表示。原始 XML 的许多不相关的细节已经在这棵树中被抽象掉了——例如属性的顺序、属性之间的无关紧要的空格,或者作为属性分隔符的 " 和 ' 之间的区别。我看不出任何可以想象的原因想要编写一个将这些区别视为重要的程序。

于 2011-04-30T22:12:51.143 回答