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"/>
我有一个关于 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"/>