Фрагмент, который вы показали, недопустим XML - чтобы быть правильно сформированным, он должен иметь DTD, который объявил бы сущность nbsp
. Так что неясно, как вы обрабатываете это, или почему это происходит настолько далеко, насколько это возможно.
Если было DTD, то контент, видимый процессором XQuery (как доставлено парсером XML) ) будет расширением сущности (предположительно, одним символом xA0), и запросу не потребуется выполнять какую-либо работу, чтобы понять или перевести его.
Возможно, здесь происходит что-то еще: возможно, фрагмент показано, что на самом деле внутри раздела CDATA, так что он передается без изменений парсером XML?
== UPDATE ==
Вы объяснили, что фактически обрабатываете символьная строка, содержащая последовательность из шести символов
, и вы хотите заменить ее одним символом xA0.
В абстрактных терминах выражение XPath replace(' ', '_')
(где '_' - xA0) будет сделай это; вопрос заключается в том, как express это в конкретном синтаксисе, и это зависит от языка хоста. Это также область, где XQuery отличается от XPath. В частности, XQuery использует XML правила для экранирования специальных символов в строковых литералах (но не в других местах), в то время как XPath не делает экранирования и не экранирования, для этого он использует язык хоста.
В XQuery, я думаю, что правильное выражение - replace(' ', ' ')
.
Но здесь возникает другой вопрос: почему браузер отправляет некорректно XML в своем HTTP-запросе POST? Правильно сформированный XML не содержит неопределенных ссылок на сущности, таких как
. Вместо того, чтобы пытаться восстановить XML в получателе, разве вы не должны смотреть, почему у вас отрывается XML от отправителя?