0

考虑以下 xsd。对于 Addr,city 可以是任何字符串。我想限制 USAddr 中的城市属性遵循一些正则表达式。我怎样才能做到这一点 ?请注意,基本类型“Addr”中的城市应该仍然可以有任何字符串而没有任何限制。谢谢 !

<?xml version="1.0"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexType name="Addr">
  <xs:attribute name="city" type="xs:string" use="required"/>
</xs:complexType>


<xs:complexType name="USAddr">
  <xs:complexContent>
    <xs:extension base="Addr">
      <xs:attribute name="state" type="xs:string" use="required"/>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:element name="addr" type="USAddr"/>

</xs:schema>

xml:

<addr city='abc' state='aaa'/>
4

1 回答 1

0

属性可以是任何简单类型,简单类型可以有限制。因此,首先,使用所需的正则表达式定义一个简单类型:

<xs:simpleType name="USCity">
  <xs:restriction base="xs:string">
     <xs:pattern value="[a-zA-Z\.]+ ([a-zA-Z]+)*"/> <!-- For example -->
  </xs:restriction>
</xs:simpleType>

然后将城市属性的类型设置为“USCity”。

于 2013-06-06T13:02:10.937 回答