XSLи <node></node> diff - PullRequest
       1

XSLи <node></node> diff

1 голос
/ 31 мая 2011

Можно ли различить <node/> и <node></node> с xsl?

Ответы [ 2 ]

0 голосов
/ 31 мая 2011

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

Единственное решение, которое мне приходит в голову, - это использовать синтаксический анализатор, который имеет некоторые расширения для добавления лексических данных в анализируемое дерево. Это может быть основано на модификации дерева путем добавления новых элементов, которые представляют различные лексические события. Тогда ваш XSLT-код может идентифицировать эти узлы, добавленные синтаксическим анализатором, и обработать их соответствующим образом.

Но, в конце концов, если вы не спрашиваете об этом только потому, что это вас интересует, но вам действительно нужно различать <node/> и <node></node> в вашем документе XSLT, то, вероятно, что-то не так в вашей цепочке инструментов / процессе модель.

0 голосов
/ 31 мая 2011

Нет, ни с любым соответствующим XML-процессором.

(Если у вас нет какой-либо лексической информации, которую вы могли бы использовать, чтобы определить, какая форма разметки использовалась - возможно, SAX-локаторы.)

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