Сохранение строк, используемых в xml, при преобразовании xml с использованием xsl - PullRequest
2 голосов
/ 25 января 2011

Я преобразую xml, используя xsl. Я получаю xml из базы данных Oracle. Когда я преобразую, я не могу увидеть данные в том формате, в котором они фактически хранились. В конкретном узле используются переводы строк, которые видныв XML, но когда я преобразую, я не могу увидеть перевод строки. Все содержимое в конкретном узле отображается в строке.

Может ли кто-нибудь помочь мне в том, как включить переводы строки, которые ужетам в xml ???

спасибо рагхав

Ответы [ 3 ]

1 голос
/ 25 января 2011

Как предложено выше, если вы используете MSXML, убедитесь, что он настроен на сохранение пробелов.

Также убедитесь, что таблица стилей не использует <xsl:strip-space>.

Кроме того, если вы используете XSLT 2.0, тогда пробел по умолчанию удаляется для элементов, определенных в DTD или схеме как имеющих элементтолько контент.

Также, конечно, возможно, что ваш код таблицы стилей что-то делает с текстовыми узлами пробела, кроме копирования их в вывод.

0 голосов
/ 25 января 2011

Попробуйте использовать это преобразование :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes"/>
 <xsl:preserve-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>
</xsl:stylesheet>

Если разрывы строк по-прежнему не отображаются, это означает, что анализатор XML удаляет все текстовые узлы, содержащие только пробелы. Прочитайте документацию о том, как вызвать синтаксический анализатор так, чтобы это действие по умолчанию было подавлено - как предложено в ответе Динны на MSXML.

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

0 голосов
/ 25 января 2011

XML и производные сжимают пробелы, так что для парсера они не имеют значения.Однако некоторые парсеры имеют возможность сохранить пробелы.В MSXML для свойства preserveWhiteSpace в DomDocument установлено значение true.

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