元素或其他元素或文本的 XSD
我需要一个用于以下构造的 XSD:
Expression := <FunctionCall> | <OperatorConstruct> | <Variable> | Constant_Text
换句话说,表达式类型由 3 种其他类型和一个文本之间的选择组成。
我知道有一个 xs:Choice
元素,但我不知道如何编写“或文本”部分。只需在“表达式”元素上使用“mixed=true”即可输入文本和其他元素,但我想仅限于这四个元素中的一个。
所以问题是,我可以定义什么 xsd 来允许三个元素之一或文本?
I need an XSD for the following construct:
Expression := <FunctionCall> | <OperatorConstruct> | <Variable> | Constant_Text
In other words, the Expression type consist of a choice between 3 other types and a text.
I know there is a xs:Choice
element, but I can't figure out how to write the 'Or Text' part. Simply using mixed=true on the Expression element allows to enter text AND other elements, but I would like to limit to only one from those four.
So the question is, what xsd can I define that allows one of three elements or a text?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您希望您的结构通过 XML 模式进行验证,则必须将所有四个选择都放入元素中。 MathML 表达式就是这样工作的,每个术语都有元素。
或者您可以使用
mixed
并验证 XSD 外部的结构(使用 XSLT 或 Schematron 或您自己的解析代码)。If you want your structure validated by an XML Schema, you'll have to make all four choices into elements. MathML expressions work that way, with elements for every term.
Or you could go with
mixed
and validate the structure outside of XSD (with XSLT or Schematron or your own parsing code).