簡體   English   中英

XML 架構 - 將元素限制為枚舉或 keyref

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM