Как заставить элемент содержать только CDATA через XSD - PullRequest
0 голосов
/ 24 января 2011

Мое требование состоит в том, чтобы любой XML-файл, который будет проверен по моей схеме, должен соответствовать следующему условию.

Элемент OTHERWISE может содержать только раздел CDATA и ничего больше.*

Допустимый XML: <OTHERWISE ContentURI=""><![CDATA[<html>Good-bye</html>]]></OTHERWISE>

Недопустимый XML: <OTHERWISE ContentURI="">ABC</OTHERWISE>

Я пытаюсь выполнить следующее:

<xs:simpleContent> <xs:restriction base="OtherwiseAtt"> <xs:pattern value="^&lt;\!\[CDATA\[[a-zA-Z0-9]*\]\]&gt;" /> </xs:restriction> </xs:simpleContent>

Любойвещь может пойти внутри CDATA.Я поставил [a-zA-Z0-9] * только для целей тестирования.

Пожалуйста, помогите мне.

Спасибо Сабри

1 Ответ

2 голосов
/ 24 января 2011

Содержимое между <![CDATA[ и ]]> обрабатывается анализатором. Ваш XML-файл был полностью проанализирован ко времени его проверки. CDATA - это еще один способ избежать специальных символов. Валидатор не сможет определить, содержит ли элемент CDATA или нет так, как вы хотите.

Целью проверки является наложение контроля на структуру ваших документов. Он не является и не может применять конкретный метод экранирования текста.

Зачем вам нужно, чтобы содержимое было экранировано CDATA? Это звучит как попытка сделать неправильный выбор дизайна на более ранней стадии.

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