Ошибка Xquery с fn: substring-before - PullRequest
1 голос
/ 02 ноября 2011
    <url>{substring-before(data($y/link[1]/@href),'&')}</url>

Ошибка при попытке запустить это

    No closing ';' found for entity or character reference

Кто-нибудь знает, что является причиной этой ошибки?

Ответы [ 2 ]

4 голосов
/ 02 ноября 2011

В XQuery амперсанд в строковом литерале (и в некоторых других контекстах) должен быть экранирован как &amp;, так же, как в XML.

1 голос
/ 17 апреля 2015

Майкл Кей прав. «&» Само по себе недопустимо в XML. Это всегда должно сопровождаться сущностью. Примеры включают & <> и т. Д. Если вы думаете, что ваш поиск не будет работать, потому что вы ищете «&» вместо «&», это неправильное мышление. Как человек, попробуйте перевести в своей голове, что «&» действительно похоже на «&», на анализатор XML. Делать это будет работать:

<url>{substring-before(data($y/link[1]/@href),'&amp')}</url>
...