Использование XSLT для преобразования текста со знаком равенства вне тега

Я пытаюсь использовать XSLT для преобразования XML из GSA (поискового устройства Google) и получаю следующую ошибку:

XmlException: '=' — непредвиденный токен. Ожидаемый токен — ';'.

XML имеет следующее:

‹NU› /search?q=Testing&site=ActiveCases&lr=&ie=UTF-8&oe=UTF-8&output=xml_no_dtd&client=default_frontend&access=p&sort=date:D:L:d1&getfields=%252a&start=10&sa=N ‹/NU›

Как вы обрабатываете знак равенства вне тегов?


person mart2001    schedule 19.02.2015    source источник


Ответы (1)


Проблемы вызывают не знаки равенства; это амперсанд. Попробуйте заменить все ваши амперсанды на &.

Причина ошибки в том, что амперсанд начинается с ссылки на сущность. Поэтому, когда текст анализируется, синтаксический анализатор видит амперсанд как начало ссылки. Затем он ожидает имя объекта (символы имени) и точку с запятой для закончить ссылку. = не является символом имени и не точкой с запятой, поэтому возникает ошибка.

Другой вариант — поместить текст в раздел CDATA:

<NU><![CDATA[/search?q=Testing&site=ActiveCases&lr=&ie=UTF-8&oe=UTF-8&output=xml_no_dtd&client=default_frontend&access=p&sort=date:D:L:d1&getfields=%252a&start=10&sa=N]]></NU>
person Daniel Haley    schedule 19.02.2015