2016-05-09 3 views
0

Я пытаюсь обновить текстовое значение узла с помощью xquery. То, что у меня есть, отлично подходит для чисел и простого текста, но у меня возникают проблемы со специальными символами.Использование «&» в обновлении base-x и xquery

Обычно, при обработке xml, я просто заменяю & на &, и все работает нормально. Однако в случае моего обновления я получаю «Ожидание цитаты». ошибка.

Эти работы:

replace value of node $v with "testers" 
replace value of node $v with "tester's" 
replace value of node $v with "tester A and tester B" 

Это провал:

replace value of node $v with "tester A & tester B" 
replace value of node $v with "tester A & tester B" 

В идеале, я бы также заменить " с ", но я не могу сделать это, пока я не смог пройти & (или какой-то заменитель) через xquery.

+1

Ваш первый запрос недостаток ожидается на провал. Второй должен работать нормально - вы уверены, что у вас нет каких-то несогласованных цитат? Например, попробуйте 'copy $ c: = bar изменить (заменить значение узла $ c« тестером A & тестером B ») return $ c'. –

+1

... предоставление полностью автономного репродуктора (то есть, который устанавливает контекстный элемент, если это необходимо, устанавливает $ v и т. Д.) Во втором (ожидаемом-успешном) случае было бы полезно. В противном случае это, возможно, CNR. –

ответ

2

Это делает фактически работают правильно, как испытано следующий документ против Basex 8.2:

declare context item := document { <root><txt>old</txt></root> }; 

copy $c := /root/txt 
modify replace value of node $c with "foo &amp; bar" 
return $c 

..., правильно получаем:

<txt>foo &amp; bar</txt>