XSLT: сохранение пробелов при копировании атрибутов - PullRequest
2 голосов
/ 30 апреля 2011

Я пытаюсь отсортировать vcproj в Microsoft Visual Studio, чтобы diff показывал что-то значимое после, например, удаление файла из проекта. Помимо сортировки, я хочу сохранить все без изменений, включая пробелы. Вход выглядит как

пространство <File

spacespace RelativePath="filename"

spacespace >

...

Фрагмент xslt ниже может добавить пробелы вокруг элементов, но я не могу понять, как обращаться с этими атрибутами, поэтому мой вывод выглядит как

пространство <File RelativePath="filename">

xslt я использую для процессора msxsl 4.0:

<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>

Ответы [ 2 ]

1 голос
/ 01 мая 2011

XSLT работает с древовидным представлением входного XML.Многие нерелевантные детали исходного XML были абстрагированы в этом дереве - например, порядок атрибутов, незначительный пробел между атрибутами или различие между «и» в качестве разделителя атрибутов. Я не вижу никакой мыслимой причиныжелая написать программу, которая рассматривает эти различия как значимые.

1 голос
/ 30 апреля 2011

Эти пробелы всегда незначительны в XML, и я считаю, что нет никакой возможности контролировать это поведение в общем случае для любой библиотеки XML / XSLT.

...