以文本方式查看主题

-  计算机科学论坛  (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=9850)


--  作者:alexhaha
--  发布时间:9/8/2004 6:11:00 PM

--  schema如何自定义复杂类型?
一个schema文件
<xs:element name="parent">  
  <xs:complexType>
    <xs:sequence>     
      <xs:element name="RECORD" type="Record" >
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>
.....
<xs:complexType name="Record">
  <xs:sequence>
    <xs:element name="NO" type="No"/>
    <xs:element name="TEXT" type="Text"/>
  </xs:sequence>
</xs:complexType> 

我如何在<xs:element name="RECORD" type="Record" >
下面限制RECORD的取值?
比如只能出现<xs:element name="NO" type="No"/>

   


--  作者:追梦少年
--  发布时间:9/9/2004 12:49:00 AM

--  
我不知道你到底要表达什么意思!不过schema自定义复杂类型很简单的,只要你一步一步的往下分解就行了!分解到可以用基本数据类型来表示就OK了

下面看个例子

<?xml version="1.0" encoding="utf-8" ?>
<PRODUCTDATA>
 <PRODUCT>
  <PRODUCTNAME>Micky mouse</PRODUCTNAME>
  <DESCRIPTION>A lovely mouse</DESCRIPTION>
  <PRICE>10</PRICE>
  <QUANTITY>20</QUANTITY>
 </PRODUCT>
 <PRODUCT>
  <PRODUCTNAME>Inside XML</PRODUCTNAME>
  <DESCRIPTION>A good book to teach you xml</DESCRIPTION>
  <PRICE>54</PRICE>
  <QUANTITY>50</QUANTITY>
 </PRODUCT>
</PRODUCTDATA>


定义PRODUCTDATA复杂类型的元素:
<xsd:element name="PRODUCTDATA" type="prdata">
<!-- 设置元素PRODUCTDATA的复杂类型 -->
<xsd:complexType name="prdata">
 <xsd:sequence>
  <xsd:element name="PRODUCT" type="prod">
 </xsd:sequence>
</xsd:complexType>

<!-- 设置元素PRODUCT的复杂类型 -->
<xsd:complexType name="prod">
 <xsd:sequence>
  <xsd:element name="PRODUCTNAME" type="xsd:string" />
                                <xsd:element name="DESCRIPTION" type="xsd:string" />
                                <xsd:element name="PRICE" type="xsd:positiveInteger" />
                                <xsd:element name="QUANTITY" type="xsd:Integer" />
 </xsd:sequence>
</xsd:complexType>


--  作者:alexhaha
--  发布时间:9/9/2004 8:30:00 AM

--  
我的意思是在<xs:complexType name="Record">中定义了该type的取值范围,
而在<xs:element name="RECORD" type="Record" >
出现在不同的地方时,使用type Record的取值范围的一个子集.
--  作者:alexhaha
--  发布时间:9/9/2004 5:41:00 PM

--  
比如
类型定义是
<xs:complexType name="Record">
  <xs:sequence>
    <xs:element name="NO" type="No"/>
    <xs:element name="TEXT" type="Text"/>
  </xs:sequence>
</xs:complexType>

对应的xml文件
<father>
<RECORD>
<NO>asdf</NO>//只能出现NO
</RECORD>
</father>
<mother>
<RECORD>
<TEXT>asdf</TEXT>//只能出现TEXT
</RECORD>
</mother>


这样怎么定义?


--  作者:alexhaha
--  发布时间:9/9/2004 5:41:00 PM

--  
比如
类型定义是
<xs:complexType name="Record">
  <xs:sequence>
    <xs:element name="NO" type="No"/>
    <xs:element name="TEXT" type="Text"/>
  </xs:sequence>
</xs:complexType>

对应的xml文件
<father>
<RECORD>
<NO>asdf</NO>//只能出现NO
</RECORD>
</father>
<mother>
<RECORD>
<TEXT>asdf</TEXT>//只能出现TEXT
</RECORD>
</mother>


这样怎么定义?


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