Возврат каретки удален во время преобразования xsl - PullRequest
0 голосов
/ 03 сентября 2018

Я преобразую XML-файл с помощью задачи Ant xslt. У меня есть CR-LF в конце каждой строки исходного файла, и только LF остается в преобразованном файле. Таким образом, весь контент помещается в одну строку.

XSL код:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="xml" indent="yes" encoding="UTF-8" />
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="model[@name='docInfoDefaultDetails']">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
            <xsl:if test="not(action[@name='attachments'])">
                <action name="attachments" type="object"/>
            </xsl:if>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

И задача Ant ($ {UpdateTest_xml} - это ссылка на оригинальный файл XML, $ {UpdateTest_xsl} - это ссылка на файл xsl):

<xslt extension=".xml" in="${UpdateTest_xml}" out="${UpdateTest_xml}.bak.xml"
          style="${UpdateTest_xsl}">
</xslt>

Как сохранить КР?

1 Ответ

0 голосов
/ 04 сентября 2018

Как указывает @MartinHonnen, синтаксические анализаторы XML необходимы для нормализации концов строк до одного символа NL, поэтому к тому времени, когда XSLT видит содержимое, символы CR уже исчезли.

Правила сериализации для XSLT позволяют процессору выводить окончания строк как CRLF, а не как один NL, но это не сильно поможет вам, если выбранный вами процессор не предлагает эту опцию - и я не знаю все, что делает.

(Выходной параметр saxon:newline, упомянутый @MartinHonnen, влияет только на метод вывода текста, но не на методы вывода HTML или XML.)

Я думаю, что самое простое решение: не просматривать XML в NotePad. На платформе Windows есть множество утилит, которые с радостью отображают файлы с окончаниями строки NL, NodePad - единственная, которая этого не делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...