Схемы XSD, допускающие специальные / зарезервированные символы в теге строкового элемента - PullRequest
1 голос
/ 30 апреля 2009

В теге строкового элемента анализатор XML получит замешательство , если найдет следующие символы


«
<<br> >

&

(т. Е. Скажем, название компании было получено из поля базы данных, и это выглядит так: "Smith & Sons")

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

Ответы [ 3 ]

3 голосов
/ 30 апреля 2009

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

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

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

1 голос
/ 30 апреля 2009

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

например. вышесказанное станет «Smith & amp; Sons'

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

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

1 голос
/ 30 апреля 2009

Ответ - нет.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...