Передача <> в xquery с методом BaseX POST - PullRequest
0 голосов
/ 28 февраля 2020

Я использую метод POST для обновления базы данных BaseX, я хочу вставить узел xml в существующий документ calastone. xml в базе данных calastone, если узел содержит '<', он возвращает ошибку <strong>«Строка 6): значение атрибута« value », связанного с типом элемента« variable », не должно содержать символ« <»." </strong>

код:

<query>
<text>
    let $message := '<Id>CTN53</Id>'
     return insert nodes $message as last into doc("calastone/calastone.xml")
</text>
<variable name='message' value='<Id>CTN53</ID>'/>
</query>

тот же код без '<' добавляет текст правильно. </p>

как решить эту проблему?

1 Ответ

0 голосов
/ 28 февраля 2020

Угловые скобки, встречающиеся в атрибутах и ​​текстовых узлах, необходимо экранировать. Для атрибутов вы должны использовать &lt; и &gt;. Для текстовых узлов разделы CDATA часто более удобны:

<query>
  <text><![CDATA[
    let $message := '<Id>CTN53</Id>'
    return insert nodes $message as last into doc("calastone/calastone.xml")
  ]]></text>
  <variable name='message' value='&lt;Id&gt;CTN53&lt;/ID&gt;'/>
</query>

См., Например, Какие символы мне нужно экранировать в XML документах? для дополнительных примеров.

...