如何在XSD中使用枚举和模式?
问题是请求以下内容。手机应具有具有3个列出家庭,单元和工作值的属性类型。手机还应仅限于(###)### - ####的电话格式。 您如何将枚举阀的属性结合在一起并应用受限模式? XML示例:
<donor level="founder">
<name>David Brennan</name>
<address>5133 Oak Street
Windermere, FL 34786</address>
<phone type="home">(407) 555-8981</phone>
<phone type="cell">(407) 555-8189</phone>
<email>[email protected]</email>
<donation>50000.00</donation>
<method>Phone</method>
<effectiveDate>1982-09-01</effectiveDate>
</donor>
XSD代码我到目前为止的电话:
<xs:attribute name="type" type="pType" />
<xs:simpleType name="phoneType">
<xs:restriction base="xs:string">
<xs:pattern value="\(\d{3}\)\s\d{3}-\d{4}" />
</xs:restriction>
</xs:simpleType>
<xs:element name="phone">
<xs:complexType>
<xs:simpleContent>
<xs:extension base ="xs:string">
<xs:attribute ref="type" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name="pType">
<xs:restriction base="xs:string">
<xs:enumeration value="home" />
<xs:enumeration value="cell" />
<xs:enumeration value="work" />
</xs:restriction>
</xs:simpleType>
<xs:element name="donor">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="address"/>
<xs:element ref="phone" minOccurs="1" maxOccurs="unbounded"/>
<xs:element ref="email" minOccurs="0" />
<xs:element ref="donation" />
<xs:element ref="method" />
<xs:element ref="effectiveDate" />
</xs:sequence>
<xs:attribute ref="level" />
</xs:complexType>
</xs:element>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的代码几乎是正确的。但是您错过了
phoneType
在元素类型分配中的定义:只需更改(base
)类型&lt; xs:Extension base =“ XS:String) “&gt;
使您的电话
元素定义现在所有内容都应根据需要工作,而您的Regex定义应限制字符串值。
Your code is almost correct. But you missed to use the
phoneType
definition in your element's type assignment: just change the (base
)type in<xs:extension base ="xs:string">
making yourphone
element definitionNow everything should work as desired and your RegEx definition should restrict the string values.