XSLT: перевод XML с закрытыми тегами - PullRequest
1 голос
/ 07 января 2010

Я использую XSLT для передачи XML в другой формат XML. Если с элементом есть пустые данные, он будет отображаться как самозакрывающийся, например. <data />, но я хочу вывести его с закрывающим тегом, как этот <data></data>.

Если я изменю метод вывода с «xml» на «html», тогда я могу получить <data></data>, но я потеряю <?xml version="1.0" encoding="UTF-8"?> в верхней части документа. Это правильный способ сделать это?

Большое спасибо.

Daoming

Ответы [ 2 ]

3 голосов
/ 07 января 2010

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

Если вы хотите передать выходные данные в какой-то неконтролируемый анализатор XML, который находится под контролем, то используйте более удобный анализатор или исправьте тот, который вы используете.

Если он находится вне вашего контроля, и вы должны отправить его неадекватному анализатору XML, тогда вам действительно нужен пролог? Если нет, то метод вывода HTML хорошо.

Если вам нужен пролог XML, то вы можете использовать метод вывода html и добавить пролог после преобразования, но перед отправкой его дефектному парсеру.

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

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

1 голос
/ 07 января 2010

Самозакрывающиеся и явно закрытые элементы - это одно и то же во всех отношениях.

Только если где-то в вашей цепочке обработки имеется инструмент, не поддерживающий XML (например, код, выполняющий обработку XML с помощью регулярных выражений), он может изменить ситуацию. В этот момент вы должны подумать об изменении этой части обработки вместо части генерации / сериализации XML.

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