Xquery заменяет значение элемента, которое имеет префикс - PullRequest
0 голосов
/ 12 февраля 2019

Я новичок в Xquery.Сообщение по этому запросу уже существует, но у меня возникают проблемы, когда префикс XML имеет следующий префикс:

Исходный XML:

enter code here
<?xml version="1.0" encoding="UTF-8"?>
<so:category>
    <bo:catid>1</bo:catid>
    <bo:cattext>sport</bo:cattext>
</so:category>

Запрос на изменение значения, предоставленного в другом сообщении:

declare namespace local = "http://example.org";
declare namespace bo = "http://example1.org";

declare function local:copy-replace($element as element()) {

  if ($element/self::bo:catid)
  then <bo:catid>test</bo:catid>
  else element {node-name($element)}
               {$element/@*,
                for $child in $element/node()
                 return if ($child instance of element())
                        then local:copy-replace($child)
                       else $child
               }
};
 local:copy-replace(/*)

У меня есть префикс для элементов в моем XML-документе.Поэтому, когда я выполняю запрос, я получаю следующую ошибку:

ОШИБКА - Префикс "bo" для элемента "bo: catid" не связан.

Я не уверен, как справитьсяпрефикс & искали связанный предмет в Интернете.Однако я не могу решить эту проблему с помощью предоставленной информации, и мне необходимо знать, что я делаю неправильно.

1 Ответ

0 голосов
/ 12 февраля 2019

Ваш XML правильно сформирован в соответствии с рекомендацией XML 1.0, но он не правильно сформирован в соответствии с пространством имен XML 1.0 (поскольку он использует префиксы пространства имен, которые не связаны ни с одним URI пространства имен).Большинство инструментов в экосистеме XML будут обрабатывать только правильно сформированный XML-файл пространства имен, и это является абсолютным требованием для использования XQuery.

Объявление префиксов пространства имен в запросе не избавляет от необходимости иметьправильно сформированный ввод пространства имен.

...