Схемы XSD, разрешающие использование специальных / зарезервированных символов в теге строкового элемента

StackOverflow https://stackoverflow.com/questions/806191

  •  03-07-2019
  •  | 
  •  

Вопрос

В теге string element анализатор XML получит сбитый с толку если он найдет следующие символы

'
"
<
>

&

(т.е.допустим, название компании было извлечено из поля базы данных, и оно выглядит следующим образом:"Смит и сыновья")

Вопрос в том, как вы можете спроектировать свой XSD так, чтобы игнорировать эти символы, если они находятся внутри элемента?

Это было полезно?

Решение

Вы не можете заставить его игнорировать эти символы.

Они такие недействительный в формате XML и, следовательно, должны быть экранированы или обернуты в разделы CDATA.Эти символы никак не могут отображаться в XML если не вы создаете XML, используя неподходящие средства (а именно:конкатенация строк).

Если вы создаете свой XML с использованием надлежащих средств (какой-нибудь библиотеки XML), эти символы прозрачно заменяются их аналогами, экранированными в формате XML, и ни один анализатор не пожалуется.

Другие советы

Ответ в том, что вы этого не делаете.

Создатель XML-контента должен разместить их в разделах CDATA.

Если вы извлекаете "Smith & Sons" из базы данных, оно должно быть экранировано при вставке в ваш XML

например ,вышеперечисленное станет "Смитом " . &Сыновья'

Аналогично для других символов выше.

Как это происходит, зависит от того, как вы создаете свой XML-контент.Если используется API, такой как DOM, то это должно произойти автоматически.Если вы собираете свой XML вручную, то вам придется беспокоиться об этом (и других проблемах, таких как кодировка символов, что означает, что использование API здесь является предпочтительным вариантом).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top