xsd – 如何在XML模式中创建可重用的“US State”类型?
发布时间:2020-12-16 23:08:06 所属栏目:百科 来源:网络整理
导读:我有一个包含多个地址的 XML架构: xs:element name="personal_address" maxOccurs="1" !-- address fields go here --/xs:elementxs:element name="business_address" maxOccurs="1" !-- address fields go here --/xs:element 在每个地址元素中,我包含一个
我有一个包含多个地址的
XML架构:
<xs:element name="personal_address" maxOccurs="1"> <!-- address fields go here --> </xs:element> <xs:element name="business_address" maxOccurs="1"> <!-- address fields go here --> </xs:element> 在每个地址元素中,我包含一个“美国州”枚举: <xs:simpleType name="state"> <xs:restriction base="xs:string"> <xs:enumeration value="AL" /> <xs:enumeration value="AK" /> <xs:enumeration value="AS" /> .... <xs:enumeration value="WY" /> </xs:restriction> </xs:simpleType> 如何编写“US State”枚举一次并在每个地址元素中重复使用它?如果这是一个n00b问题我提前道歉 – 我以前从未写过XSD. 我最初的尝试是: <xs:element name="business_address" maxOccurs="1"> <!-- address fields go here --> <xs:element name="business_address_state" type="state" maxOccurs="1"></xs:element> </xs:element> 解决方法
我想你是在正确的轨道上.我认为它更多地与XML命名空间有关.请尝试以下方法:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/foo" xmlns:tns="http://www.example.org/foo" elementFormDefault="qualified"> <xs:element name="business_address"> <xs:complexType> <xs:sequence> <xs:element name="business_address_state" type="tns:state" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="state"> <xs:restriction base="xs:string"> <xs:enumeration value="AL" /> <xs:enumeration value="AK" /> <xs:enumeration value="AS" /> <xs:enumeration value="WY" /> </xs:restriction> </xs:simpleType> </xs:schema> 请注意,类型是tns:state不仅仅是state 然后这就是你如何使用它: <?xml version="1.0" encoding="UTF-8"?> <business_address xmlns="http://www.example.org/foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/foo foo.xsd "> <business_address_state>AL</business_address_state> </business_address> 请注意,此XML使用的默认命名空间与XSD的targetNamespace相同 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |