Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML架构-将元素限制为枚举或keyref_Xml_Xsd - Fatal编程技术网

XML架构-将元素限制为枚举或keyref

XML架构-将元素限制为枚举或keyref,xml,xsd,Xml,Xsd,我试图编写一个模式,我想将值或元素限制为枚举列表或键引用。这可能吗?我是我的图式 <xsd:simpleType name="TypeEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="uint8" /> <xsd:enumeration value="uint16" /> <xsd:enu

我试图编写一个模式,我想将值或元素限制为枚举列表或键引用。这可能吗?我是我的图式

   <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>

茴香
我的问题是如何构造


提前感谢您的帮助。

创建另一个命名的简单类型,它允许剩余的枚举值(“anEnum”和“anotherEnum”),就像您创建的“TypeEnum”类型一样。然后使用
组合这些类型,并将
设置为使用此组合类型

代码示例

<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" />

创建另一个命名的简单类型,该类型允许剩余的枚举值(“anEnum”和“anotherEnum”),就像创建“TypeEnum”类型一样。然后使用
组合这些类型,并将
设置为使用此组合类型

代码示例

<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" />


附加类型不意味着是动态的吗?如果在.xml文件中添加更多类型会怎么样?附加类型不意味着是动态的吗?如果在.xml文件中添加更多类型会怎么样?