XML 架构 - 具有不同数据类型的元素属性(需要简单的类型定义)

XML Schema - Element attribute with different datatypes (need a simple typ definition)

我有一个关于 XML-Schema 的问题。 我想检查我的 XML 元素属性是否具有以下外观,并希望使用只有一个属性的空 XML 元素来执行此操作。


<OtherElement Id="OE-1">
 ...
</OtherElement>
<MyElement MyAttribute="OE-1 10.0 2.0 12.3 string"/>

MyAttribute 需要像这样的简单类型。

我的属性 = "IDREF DOUBLE DOUBLE DOUBLE"

这对于属性是否可行,或者是否有必要创建复杂的类型并使用包含内容的 XML 元素?

我希望这个架构能起作用,但它不起作用。

<simpleType name="SampleTypeUnion">
 <union memberTypes="test:BookRef test:DoubListRest"/>
</simpleType>

<simpleType name="BookRef">
 <restriction base="IDREF"/>
</simpleType>

<simpleType name="DoubListRest">
 <restriction base="test:DoubList">
  <length value="3"/>
 </restriction>
</simpleType>

<simpleType name="DoubList">
 <list itemType="test:Doub"/>
</simpleType>

<simpleType name="Doub">
 <restriction base="double"/>
</simpleType>

非常感谢您的帮助!

您要查找的是 XML 架构列表元素。 在这里查看: [https://www.w3schools.com/xml/el_list.asp]1 和这里: http://www.datypic.com/books/defxmlschema1/chapter11.html

你可以用 XSD 1.1 做到这一点,前提是你只关心验证,而不关心数据类型(虽然我完全不确定这是一个好的设计)。

您可以将类型定义为 xs:TOKEN 的列表,其长度方面限制了出现的标记数量,然后您可以使用 [=12= 形式的断言来约束单个标记的类型]

<xs:assert test="$value[3] castable as xs:double"/>