XSD для элемента или другого элемента или текста - PullRequest
0 голосов
/ 26 апреля 2011

Мне нужен XSD для следующей конструкции:

Expression := <FunctionCall> | <OperatorConstruct> | <Variable> | Constant_Text

Другими словами, тип Expression состоит из выбора между 3 другими типами и текстом.
Я знаю, что есть элемент xs:Choice, но я не могу понять, как написать часть 'Or Text'. Простое использование mixed = true для элемента Expression позволяет вводить текст и другие элементы, но я бы хотел ограничить только один из этих четырех.
Итак, вопрос в том, что я могу определить xsd, который допускает один из трех элементов или текст?

1 Ответ

1 голос
/ 29 апреля 2011

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

Или вы можете пойти с mixed и проверить структуру вне XSD (с XSLT или Schematron или вашим собственным кодом синтаксического анализа).

...