[英]XML Schema - Restrict element to enum or keyref
我正在尝试编写模式,并且我想将值或元素限制为枚举列表或键引用。 这可能吗? 即,我有我的架构
<xsd:simpleType name="TypeEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="uint8" />
<xsd:enumeration value="uint16" />
<xsd:enumeration value="uint32" />
<xsd:enumeration value="uint64" />
</xsd:restriction>
</xsd:simpleType>
在我的 XML 我有
<root>
<a>anEnum<a> <!-- This value should be restricted to either anEnum, anotherEnum or anything in TypeEnum -->
<AdditionalTypes>
<Enum Name="anEnum" />
<Enum Name="anotherEnum" />
</AdditionalTypes>
</root>
我的问题是如何构造<a>
的架构元素定义
提前感谢您的帮助。
创建另一个命名简单类型,它允许枚举值(“anEnum”和“anotherEnum”)的 rest,就像您创建“TypeEnum”类型一样。 然后使用<xsd:union>
组合这些类型并设置<a>
以使用这种组合类型。
代码示例
<xsd:simpleType name="TypeEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="uint8" />
<xsd:enumeration value="uint16" />
<xsd:enumeration value="uint32" />
<xsd:enumeration value="uint64" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TypeAdditionalEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="anEnum" />
<xsd:enumeration value="anotherEnum" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TypeUnionEnum">
<xsd:union memberTypes="TypeAdditionalEnum TypeEnum" />
</xsd:simpleType>
<xsd:element name="a" type="TypeUnionEnum" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.