以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  [求助]请问全局complexType与全局element的区别  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=29992)


--  作者:namo
--  发布时间:4/5/2006 2:03:00 PM

--  [求助]请问全局complexType与全局element的区别
从书写上看,似乎全局的complexType只比全局element少一层标记而已。

【引用】
   <xs:sequence>
    <xs:element name="Address" type="AddressType"/>
    <xs:element ref="Person" maxOccurs="unbounded"/>
   </xs:sequence>

【complexType定义】
 <xs:complexType name="AddressType">
  <xs:sequence>
   <xs:element name="Name" type="xs:string"/>
   <xs:element name="Street" type="xs:string"/>
   <xs:element name="City" type="xs:string"/>
  </xs:sequence>
  <xs:attribute name="IsNew" type="xs:boolean"/>
 </xs:complexType>

【element定义】
 <xs:element name="Person">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="First" type="xs:string"/>
    <xs:element name="Last" type="xs:string"/>
    <xs:element name="Title" type="xs:string" minOccurs="0"/>
    <xs:element name="PhoneExt">
     <xs:simpleType>
      <xs:restriction base="xs:integer">
       <xs:maxInclusive value="99"/>
      </xs:restriction>
     </xs:simpleType>
    </xs:element>
    <xs:element name="Email" type="xs:string"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>

从表面看来,似乎把全局element的Person这个dd定义成complexType也未尝不可。请问有区别么?谢谢!


--  作者:sajia
--  发布时间:4/5/2006 3:50:00 PM

--  
我也有这样的疑惑!!关注中~~~~~~~~~~~
--  作者:gemingke
--  发布时间:4/5/2006 5:13:00 PM

--  
全局的complexType的引用比全局的Element引用方便
举例

定义某复杂型叫做“单位Type”,以后凡是用来说明单位的属性的元素,都可以使用这格式,改变的仅仅是最外层的元素名,什么“供货单位”,“收货单位”

若使用全局Element,那么,最外层元素的名字就已经固定了,不够灵活


--  作者:namo
--  发布时间:4/5/2006 7:57:00 PM

--  
哦?那全局element存在的意义何在呢?按我理解,用全局的complexType就可以代替全局element了。
--  作者:gemingke
--  发布时间:4/5/2006 9:38:00 PM

--  
可以这样理解
--  作者:feirate
--  发布时间:4/5/2006 11:00:00 PM

--  
不是阿,有些只是定义类型和属性的全局element你就不能做成complexType吧?
而且有时候为了保护一个局部的complexType不被看见,就需要element包住它
--  作者:namo
--  发布时间:4/6/2006 8:28:00 PM

--  
以下是引用feirate在2006-4-5 23:00:00的发言:
而且有时候为了保护一个局部的complexType不被看见,就需要element包住它

我对“保护一个局部的complexType不被看见”不是很理解,什么时候需要这样做呢?可否举例?谢谢!


--  作者:feirate
--  发布时间:4/6/2006 10:59:00 PM

--  
书上说的!~~跟名称空间有关...我连名称空间还不懂呢....
--  作者:kelindun
--  发布时间:6/4/2006 10:24:00 PM

--  
只知道看课本,只知其一,不知其二,大家的讨论令我茅塞顿开!!学习中.....

--  作者:kelindun
--  发布时间:6/4/2006 10:26:00 PM

--  
只知道看课本,只知其一,不知其二,大家的讨论令我茅塞顿开!!学习中.....

--  作者:ahdaht
--  发布时间:7/28/2006 11:24:00 AM

--  
据我的理解,complextype 就像c++语言里的抽象类,本身是没有任何意义的,就好比定义了一个类 名叫"家用电器",只有对这个类进行定义比如其中一个元素是“电视机”,以及该类的各种属性,这个类才是有意义的。如果以后定义的其他元素声明是“家用电器”类时,我们就可以用“家用电器”里的种种属性来约束它了。至于全局element元素,我的理解是这样的:再用电器这个例子,我定义了一个全局element叫“电视机”,<element name="电视机" type="家用电器">,它包含若干个子元素“长虹电视机”、“康佳电视机”、“创维电视机”……每个子元素都可能具有不同的complextype。
我也是新手,看到各位讨论禁不住一时手痒,有不对的地方还望大侠们指点,感激不尽!
--  作者:peterbarry
--  发布时间:8/3/2006 3:31:00 PM

--  
学习中...
--  作者:xuaijun
--  发布时间:8/5/2006 4:58:00 PM

--  
我也没有搞清楚呢,学习中……
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
85.938ms