以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  从DTD到SCHEMA  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=47330)


--  作者:xml-linguist
--  发布时间:5/22/2007 11:34:00 AM

--  从DTD到SCHEMA
以前一直用DTD。最近看了一下SCHEMA,决定学习SCHEMA。
看起来容易做起来难。先把这里的帖子浏览一遍再说!

--  作者:xml-linguist
--  发布时间:5/22/2007 12:01:00 PM

--  
引用“teiki”的贴:

跟我学XML Schema(4):如何定义属性呢?


加入实例文档的元素包含属性,怎么办呢?

customer2.xml
---------------
<customer id="001718">
  <name>Teiki</name>
  <address>No.237, Road Waitan, Shanghai</address>
</customer>

那就这样写Schema文档:
customer2.xsd
------------------
1: <?xml version="1.0"?>
2: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3:
4:   <xsd:element name="customer">
5:    <xsd:complexType>
6:      <xsd:sequence>
7:        <xsd:element name="name" type="xsd:string"/>
8:        <xsd:element name="address" type="xsd:string" />
9:      </xsd:sequence>
10:      <!-- 增加属性定义 -->
11:      <xsd:attribute name="id" type="xsd:string"/>
12:    </xsd:complexType>
13:  </xsd:element>
14:
15: </xsd:schema>

很简单,在<sequence>元素定义完成后,再用<attribute>元素id。
=======================================
如果有两个属性呢?是不是直接重复使用<xsd:attribute name="" type=""/>?
回头要落实一下这个问题!


--  作者:admin
--  发布时间:5/22/2007 11:15:00 PM

--  
嗯。有什么问题,欢迎提问。
--  作者:xml-linguist
--  发布时间:5/23/2007 10:31:00 AM

--  
谢谢admin!
先认真翻一遍帖子,可以解决6-7成的问题。有些问题还可以参与讨论。剩下的问题,就要求您来帮忙了!
--  作者:xml-linguist
--  发布时间:5/23/2007 10:33:00 AM

--  
admin   
  威望:9
  头衔:W3CHINA站长
  等级:研三(收到微软亚洲研究院的Offer了)
======================================
好羡慕你!我什么时候能收到微软中国研究院的Offer了就乐翻了!

--  作者:xml-linguist
--  发布时间:5/23/2007 11:54:00 AM

--  
依据“teiki”的贴,针对一个xml文件写出三个格式不同的xsd:

xml
...
<customer>
<name>Teiki</name>
<address>
  <prefecture>Zhejiang</prefecture>
  <city>Hangzhou</city>
  <street>Xilu Road, No.121, 7F</street>
</address>
</customer>
...

xsd01
...
<xs:element name="customer">
<xs:complexType>
  <xs:sequence>
   <xs:element name="name" type="xs:string"/>
   <xs:element name="address">
    <xs:complexType>
     <xs:sequence>
      <xs:element name="prefecture" type="xs:string"/>
      <xs:element name="city" type="xs:string"/>
      <xs:element name="street" type="xs:string"/>
     </xs:sequence>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
</xs:complexType>
</xs:element>
...

xsd02
...
<xs:element name="customer">
<xs:complexType>
  <xs:sequence>
   <xs:element name="name" type="xs:string"/>
   <xs:element ref="address"/>
  </xs:sequence>
</xs:complexType>

<xs:element name="address">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="prefecture" type="xs:string"/>
    <xs:element name="city" type="xs:string"/>
    <xs:element name="streed" type="xs:string"/>
   </xs:sequence>
  </xs:complexType>
</xs:element>

xsd03
...
<xs:element name="name" type="xs:string"/>
<xs:element name="prefecture" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="street" type="xs:string"/>

<xs:element name="customer">
<xs:compexType>
  <xs:sequence>
   <xs:element ref="name"/>
   <xs:element name="address">
    <xs:complexType>
     <xs:sequence>
      <xs:element ref="prefecture"/>
      <xs:element ref="city"/>
      <xs:element ref="street"/>
     </xs:sequence>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
</xs:complexType>
</xs:element>


--  作者:xml-linguist
--  发布时间:5/23/2007 11:56:00 AM

--  
突击看完了schema的基础教程,自己动手实践一下。中间肯定有疏漏,请各位帮助指正!
--  作者:xml-linguist
--  发布时间:5/23/2007 12:05:00 PM

--  
将帖子命名为“从DTD到SCHEMA”,本意是想通过对DTD和SCHEMA的比较的方法来掌握SCHEMA,现在看来似乎没有必要。
--  作者:xml-linguist
--  发布时间:5/23/2007 1:44:00 PM

--  
以下XML的两个XST也是一样的:

xml
...
<order>
  <orderItem>
    <name>Accounting Book</name>
  </orderItem>
  <orderItem>
    <id>7-5058-3496-7</id>
  </orderItem>
</order>
...

xsd01
...
<xs:element name="order">
<xs:complexType>
  <xs:sequence>
   <xs:element name="orderItem" minOccurs="5" maxOccurs="10">
    <xs:complexType>
     <xs:choice>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="id" type="xs:string"/>
     </xs:choice>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
</xs:complexType>
</xs:element>
...

xsd02
...
<xs:element name="order">
<xs:complexType>
  <xs:sequence>
   <xs:element ref="orderItem" minOccurs="5" maxOccurs="10"/>
  </xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="orderItem">
<xs:complexType>
  <xs:choice>
   <xs:element name="name" type="xs:string"/>
   <xs:element name="id" type="xs:string"/>
  </xs:choice>
</xs:complexType>
</xs:element>
...


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