Функции синтаксического анализа 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), выдается две ошибки:

  1. Имя объекта должно следовать сразу за "&" в ссылке на объект.
  2. FODC0006: Первый аргумент parse-xml-фрагмента () не является правильно сформированным и правильно сформированным пространством имен XML-фрагментом.

Если я удалю & сущность из входного текста, то она анализируется правильно. Однако, если сущность экранируется во входных данных, почему это может привести к сбою синтаксического анализа XML?

1 ответ

Решение

Если вы хотите разобрать XML, то с помощью амперсанда необходимо экранировать как & и я уверен, что в чистом контексте XPath вы можете сделать parse-xml-fragment('&'), Если ваш ввод экранирован внутри XML, то, конечно, вам нужно экранировать как &:

<data>&lt;span&gt;Foo&lt;/span&gt; &amp;amp; &lt;span&gt;bar&lt;/span&gt; have been tagged.</data>

или же

<data><![CDATA[<span>Foo</span> &amp; <span>bar</span> have been tagged.]]></data>
Другие вопросы по тегам