Рассмотрим bla.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<rooty>
<person>
<age>42</age>
<name>bob</name>
</person>
<person>
<age>53</age>
<name>doggo</name>
</person>
</rooty>
И преобразуйте moo.xslt
, добавляя к каждому человеку корову:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output omit-xml-declaration="no" indent="yes" encoding="UTF-8"/>
<!-- Identity transform -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="person">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:copy-of select="node()"/>
<cow>Bessy</cow>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Запуск с xsltproc moo.xslt bla.xml
, кажется, пропускает символ новой строки (после cow
):
<?xml version="1.0" encoding="UTF-8"?>
<rooty>
<person>
<age>42</age>
<name>bob</name>
<cow>Bessy</cow></person>
<person>
<age>53</age>
<name>doggo</name>
<cow>Bessy</cow></person>
</rooty>
Мне удалось обойти это, вручную вводя пробелы, используя такие вещи, как <xsl:text>
 </xsl:text>
, но я уверен, что это не так. Я предполагаю, что мой XSLT делает что-то глупое, но я не могу понять, что.