Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->编程语言 ->XML ->正文

XML 技术指南(2)

来源:Linuxdby.com 作者:Webmaster 时间:2007-04-28 点击: [收藏] [投稿]

 

schema

  一个schema通常是一组为了描述一类给定的XML文档而预先定好的规则。它定义了可以在指定XML文档中出现的各个元素以及和某个元素相关的若干属性。它同时定义了关于XML文档的结构化信息,比如哪几个元素是其他元素的子元素,子元素出现的顺序和他们的数量。它还可以定义一个元素是否为空,能否包含文本或者属性是否有默认值。

  DTDs(Document Type Definitions)和XML数据 都是怎样描述XML文档计划的具体例子。

  文档类型定义(Document Type Definitions)

  DTD语言是为了定义SGML文档的确认规则而专门开发的。因为XML是SGML的一个子集,所以DTDs也可以用来定义XML的确定规则。与XMLschema不同,一个XML处理器可以在运行时用DTD来确定一个XML的合法性。



  DTD的语法有时可能会有一些晦涩难懂。DTDs使用不同的语法元素,诸如惊叹号、圆括号、星号、尖括号等,来定义在一个XML文档中那些元素是必备的,哪些是可选的以及可以出现的元素数量等等。DTDs同时还定义了元素之间的关系和属性于不同元素之间的关系。

  下面就是前面列出的hamburger.xml的DTD(hamburger.dtd):

<!ELEMENT  hamburgers           (hamburger)*>  
<!ELEMENT  hamburger            (name, description, price)>  
<!ATTLIST hamburger            lowfat CDATA #IMPLIED>
<!ELEMENT name                 (#PCDATA)>  
<!ELEMENT description           (#PCDATA)>  
<!ELEMENT price                (#PCDATA)>

  这篇文档指出,hamburgers元素可以包含多个hamburger元素。同时,每一个hamburger元素必须包含一个lowfat属性和三个子元素,所有的类型都是#PCData(parsed character data)。遵从这篇DTD的文档都必须加入下面一行代码:


  <!DOCTYPE hamburgers SYSTEM "hamburger.dtd">

  这句声明告诉分析器不论DTD中的schema是什么都认为XML文档的内容是合法的

  尽管MSXML 2.0支持DTDs,但是你还是会发现使用它们是很费力的。它非常复杂并且难于掌握与使用。请注意,DTD语法并不是合法的XML。正因为如此,XML的处理器除了XML语法,还要支持用来描述schema的DTD语法。设想一下,假如我们用XML来描述schema,那么开发者,特别是XML工具的提供者,所承担的XML文档检验工作将会变得容易得多。W3C正在考虑几种弥补DTDs不足的方案以提高现在的语法定义过程。

  XML数据

  XML-Data是一种XMLschema语言。在微软的定义中,XML-Dataschema通常是指XMLschema,而不是DTDschema。一个XML-Dataschema是一个具有良好结构的XML文档。XML-Data语言基于XML-Data DTD,后者指明所期望的schema定义格式。因为XML-Dataschema是简单的XML文档,任何用于XML文档的工具都可以用来定义XML-Dataschema

  以下的XML-Dataschema产生的schema和先前由hamburger.dtd所定义的schema是一样的:

<?xml version="1.0"?>
<Schema xmlns="schemas-microsoft-com:xml-data">
 <ElementType name="name" />
 <ElementType name="description" />
 <ElementType name="price" />
  <AttributeType name="lowfat" />
   <ElementType name="hamburger" />
   <element type="name" maxOccurs="1" />
   <element type="description" maxOccurs="1" />
   <element type="price" maxOccurs="1" />
   <attribute type="lowfat" maxOccurs="1" />
  </ElementType>


 <ElementType name="hamburgers" model="closed">
  <element type="hamburger" maxOccurs="*" />
 </ElementType>
</Schema>


  在XML-Dataschema中定义元素和属性时,分别用到的是<ElementType>和<AttributeType>元素。它们提供了对元素和属性类型的定义。定义一个元素或是属性时用<element>或<attribute>标签。你可以通过定义

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:XML 技术指南(1)   下一篇:XML 技术指南(3)

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号