以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  schema 中属性的问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=35637)


--  作者:ighack
--  发布时间:7/14/2006 10:25:00 PM

--  schema 中属性的问题
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
 <xs:element name="linkman">
  <xs:complexType>
   <xs:group ref="linkmangroup"/>
  </xs:complexType>
 </xs:element>
 <xs:group name="linkmangroup">
  <xs:sequence>
   <xs:element name="user" maxOccurs="10">
    <xs:complexType>
     <xs:sequence>
      <xs:element name="name" type="nameType"/>
      <xs:element name="sex" type="sexType"/>
      <xs:element name="age" type="ageType"/>
      <xs:element name="phone" type="phoneType">
       <xs:complexType>
        <xs:attribute name="code" type="xs:string"/>
       </xs:complexType>
      </xs:element>      
      <xs:element name="mobile" type="mobileType"/>
      <xs:element name="QQ" type="QQType"/>
      <xs:element name="email" type="emailType"/>
     </xs:sequence>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
 </xs:group>
 <xs:simpleType name="nameType">
  <xs:restriction base="xs:ID"/>
 </xs:simpleType>
 <xs:simpleType name="sexType">
  <xs:restriction base="xs:string">
   <xs:enumeration value="男"/>
   <xs:enumeration value="女"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="ageType">
  <xs:restriction base="xs:int">
   <xs:minInclusive value="15"/>
   <xs:maxInclusive value="90"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="phoneType">
  <xs:restriction base="xs:string">
   <xs:pattern value="[0-9]{8}"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="mobileType">
  <xs:restriction base="xs:string">
   <xs:pattern value="[0-9]{11}"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="QQType">
  <xs:restriction base="xs:string">
   <xs:minLength value="4"/>
   <xs:maxLength value="11"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="emailType">
  <xs:restriction base="xs:string">
   <xs:pattern value="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"/>
  </xs:restriction>
 </xs:simpleType>
<xs:simpleType name="codeType">
  <xs:restriction base="xs:string">
   <xs:enumeration value="027"/>
   <xs:enumeration value="021"/>
  </xs:restriction>
 </xs:simpleType>
</xs:schema>


我想在phone中添加一个code的属性但总是出错误
The 'type' attribute and an anonymous type definition are mutually exclusive for element declaration 'phone'.



--  作者:gemingke
--  发布时间:7/15/2006 8:33:00 AM

--  
你加错地方了。当元素应用的Type被指定以后,不可以在该元素下使用complexType

解决办法有两种

第一种是把你的“phoneType”改成complexType,这样可以在“phoneType”里面添加这个属性。

第二种是建立“newPhoneType”,在“phoneType”的基础上扩展。当然,这个办法比第一个麻烦。代码如下
 <xs:complexType name="newPhoneType">
  <xs:simpleContent>
   <xs:extension base="phoneType">
    <xs:attribute name="code" type="codeType"/>
   </xs:extension>
  </xs:simpleContent>
 </xs:complexType>


--  作者:ighack
--  发布时间:7/15/2006 2:15:00 PM

--  
谢了
我在研究研究
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms