XML Schema:具有受限内容的元素和具有已定义值的属性

时间:2016-05-02 14:45:51

标签: xml xsd

所以我有一个元素phone

 <phone carrier="A">9991234567</phone>

具有定义值的carrier属性。我使用complexType定义了它。现在,手机的内容也需要有限制(Regex)。

<xs:element name="phone" type="phoneType" />

<xs:complexType name="phoneType">
    <xs:attribute name="carrier" type="carrierType" />
</xs:complexType>

<xs:simpleType name="carrierType">
    <xs:restriction base="xs:string" >
        <xs:enumeration value="A" />
        <xs:enumeration value="B" />
    </xs:restriction>
</xs:simpleType>

1 个答案:

答案 0 :(得分:0)

你想要一个简单内容的#34;复杂类型&#34;。有关示例,请参阅

XSD : How to use both value and attribute

但在你的情况下,基类型不是xs:string,而是来自字符串的一些限制。因此,请定义您的受限类型,例如

<xs:simpleType name="phoneNr">
  <xs:restriction base="xs:string">
   <xs:pattern value="[0-9]+"/>
  </xs:restriction>
</xs:simpleType>

然后将carrierType定义为phoneNr的扩展名(扩展名为属性)。