2009-04-30 2 views
1

В строке тега элемента XML-анализатор получит запутанной если он находит следующие символыXSD Schemas позволяет специальные/зарезервированные символы в строках тега элемента

'
"
<
>

&

(т. Е. Позволяет сказать, что название компании было получено из поля базы данных, и это выглядит так: «Smith & Sons»)

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

ответ

3

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

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

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

+0

Подождите, одиночные и двойные кавычки являются недопустимыми символами в XML? –

+0

@MarkElliot Хорошо, да - в зависимости от ситуации. Они недействительны в значениях атрибутов, которые используют их как разделители. Итак, 'attribute = '... ' ...'' хорошо сформирован, так что 'attribute =" ... " ... "'. В других местах допускаются буквальные одиночные и двойные кавычки. Так что нет, они не строго запрещены, но их нельзя игнорировать (что было вопросом ОП). – Tomalak

+0

Получил это, но, к примеру, можно сказать, что 'attribute =" ... '... "', а также 'attribute =' ..." ... '', что является довольно распространенной практикой (и что-то, что я делал так долго, что было удивительно читать это) –

1

Ответ: вы не делаете.

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

1

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

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

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

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

Смежные вопросы