У меня есть переменная в xQuery типа xs:string со значением закодированного отрывка HTML (содержание твита Твиттера). Это похоже на это:
Заголовки сегодня • источники AP: < b> Obama</b> выбор для сообщения Справедливости уходит: Новости - Остальные страны - < href =" http://shar.es/mqMAG" > http://shar.es/mqMAG</a>
Когда я пытаюсь выписать это в блоке HTML, мне нужна строка, чтобы быть незавершенным так, чтобы отрывок HTML был интерпретирован браузером. Вместо этого строка становится выписанной, как, и браузер представляет ее как просто текст (таким образом, Вы видите {$entry/atom:content/text ()} Как может я не кодировать завершенные символы, таким образом, это пишет <скорее tha <? Я попытался сделать подобное замене это, но это всегда заменяет < с <! fn:replace ($s, "<"; "<")
Зависит от того, какой XQuery процессор вы используете ... Самый простой способ - использовать процессор с расширением, которое обрабатывает это для тебя. Например, с Saxon и следующим XML :
<a><c>asdf</c></a>
Вы можете написать XQuery , который использует saxon: parse ()
функция, чтобы делать то, что вы хотите:
declare namespace saxon = "http://saxon.sf.net/";
<a>{
saxon:parse(doc('test.xml')/a)
}</a>
Результат:
<a>
<c>asdf</c>
</a>
Я думаю, что у большинства (?) процессоров XQuery есть расширение, которое сделает это за вас. Надеюсь, это поможет.
В MarkLogic вы можете использовать следующий запрос :
let $d := '<a><c>asdf</c></a>'
return xdmp:unquote ($d)
в eXist, используйте util: parse ():
util:parse(concat("<top>","<c>asdf</c>",</top>"))