Включение символов «<» в текстовые узлы ввода XML для преобразования XSLT - PullRequest
3 голосов
/ 04 июня 2009

Я использую XSLT для преобразования XML-документа в текст. Текстовые узлы XML-документа содержат в себе <символов, что, конечно, бомбардирует преобразование. Есть ли способ получить XSLT-преобразование для работы с символом <в текстовом узле? В этом случае за всеми такими символами следует пробел. </p>

Ответы [ 6 ]

1 голос
/ 04 июня 2009

Использовать объекты вместо символа

<myTextTag> 1 &lt; 2, and 4 &gt; 2. This is how numbers work</myTextTag>

И в вашем API должна быть возможность конвертировать их при преобразовании / выводе

0 голосов
/ 04 июня 2009

Если ваш XML-файл содержит буквально <символов в текущем тексте, то у вас нет XML-файла. У вас есть что-то, что почти XML-файл. Либо исправьте процесс, который создает файл, либо предварительно обработайте его, чтобы исправить. </p>

0 голосов
/ 04 июня 2009

Ах, не повезло. Чтобы быть правильно сформированными, символы <и> могут не появляться, если не отмечены теги.

Не то чтобы это помогло тебе. Если вы не можете исправить источник, я предлагаю подумать о предварительной обработке входящих данных, чтобы либо заменить ссылками на сущности, как описано в других ответах, либо заключить в теги CDATA поврежденные разделы. Возможно, вы можете использовать знания предметной области с регулярными выражениями или токенизацией для исправления полей, которые могут содержать неверные данные.

Я не думаю вы можете заставить XSLT работать с плохо сформированным XML.

0 голосов
/ 04 июня 2009

Если вы выводите текст, вы можете использовать IIRC, какой-нибудь вариант <xsl:text disable-ouput-escaping="yes">...</xsl:text> - у меня нет ничего "под рукой", хотя ... возможно, попробуйте &lt; в середине?

0 голосов
/ 04 июня 2009

Если это правильно форматированный XML, символ <уже должен быть экранирован с помощью <strong>& lt ; юридическое лицо. Существуют предопределенные сущности, которые все процессоры xml должны правильно декларировать. Ознакомьтесь с рекомендациями :

Все процессоры XML должны распознавать эти объекты, являются ли они заявлено или нет. Для совместимости, действительные документы XML должны декларировать эти объекты, как и любые другие, перед их использованием.

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

0 голосов
/ 04 июня 2009

Пока созданный XML-документ заменяет <на & lt; и> с & gt; любой правильно реализованный API-интерфейс XML-анализа будет загружать документ и правильно преобразовывать объекты в символы <и>.

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