Я использовал редактор Oxygen XML для своих XSL-преобразований (Saxon-HE 9.8.0.8 в таблицах стилей XSL v. 2), и отступы исходного и конечного документов были одинаковыми: это то, что мне нужно.
Когда я запускаю XSLT из командной строки (Saxon-HE 9.8.011J, Java версия 1.8.0_161), я не получаю тот же результат (документ результата не будет иметь отступов вообще). Что я могу сделать, чтобы изменить это?
(<xsl:output indent="yes"/>
также сделает отступ для моих встроенных элементов, а это не то, что мне нужно, <xsl:strip-space elements/>
удалит некоторые пробелы между встроенными элементами, которые необходимы).
Источник:
<chapter id="ch3">
<title>Sed quam, quaes apiducius nit peror asperch icatiat</title>
<section id="s1">
<title>Et faccae sitiaessum res re dolorer errovitam,</title>
<paragraph id="p6">
<text>lorerit ab is arum dolore quaepudit exped magnate mpelestinus volupta</text>
</paragraph>
<paragraph id="p7">
<text>lorerit ab is arum <span class="s1">dolore</span> <span class="s2">quaepudit</span> exped magnate mpelestinus volupta</text>
</paragraph>
<paragraph id="p12">
<text>lorerit ab is arum dolore quaepudit exped magnate mpelestinus volupta</text>
</paragraph>
</section>
</chapter>
XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<xsl:template match="*">
<xsl:element name="{local-name()}" >
<xsl:for-each select="@*" >
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="paragraph">
<xsl:element name="paragraph">
<xsl:attribute name="id">p<xsl:number count="paragraph" from="chapter" level="any"></xsl:number>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Код командной строки
java -cp path\saxon9he.jar net.sf.saxon.Transform -t -s:path\source.xml -xsl:path\transformation.xsl -o:path\result.xml
За исключением того факта, что исходный код находится в заданном c DTD. Когда я удаляю упоминание DTD в начале исходного кода, отступ остается прежним, в противном случае отступа нет. В чем причина этого и как я могу это изменить?
Спасибо! Мария (я довольно новичок)