Функции синтаксического анализа XPath 3.0 XML в XSLT
У меня есть последовательность строк, которые мне нужно проанализировать как XML с помощью XSLT. Например:
<span>Foo</span> & <span>bar</span> have been tagged.
Когда я пытаюсь разобрать это, используя fn:parse-xml-фрагмент (используя Saxon-PE 9.6.0.5), выдается две ошибки:
- Имя объекта должно следовать сразу за "&" в ссылке на объект.
- FODC0006: Первый аргумент parse-xml-фрагмента () не является правильно сформированным и правильно сформированным пространством имен XML-фрагментом.
Если я удалю &
сущность из входного текста, то она анализируется правильно. Однако, если сущность экранируется во входных данных, почему это может привести к сбою синтаксического анализа XML?
1 ответ
Если вы хотите разобрать XML, то с помощью амперсанда необходимо экранировать как &
и я уверен, что в чистом контексте XPath вы можете сделать parse-xml-fragment('&')
, Если ваш ввод экранирован внутри XML, то, конечно, вам нужно экранировать как &amp;
:
<data><span>Foo</span> &amp; <span>bar</span> have been tagged.</data>
или же
<data><![CDATA[<span>Foo</span> & <span>bar</span> have been tagged.]]></data>