XML教程

   
1 处理XML元素  
2 处理XML文档 
  
3 处理XML数据岛  
4 类似于文档对象访问一个XML数据岛  
5 访问XML对象模式  
6 在XML文档中使用数据类型  
7 访问经过类型定义的XML值  
8 XML Schema  
 
处理XML元素 
 
XML是一种标识语言。一个XML元素是由开始标签、结束标签以及标签之间的数据构成的。 
开始和结束标签用来描述标签之间的数据。标签之间的数据被认为是元素的值。例如,在 
下面一个XML元素的例子中,元素“director”的值是“Éd Wood”。 
 
 
<director>Ed Wood</director> 
 
 
元素名(“director”)允许你把“Ed Wood”这个值标出来,这样你就能把这些数据同 
另外类似的数据区分开来。例如,有可能另一个元素的值也是“Ed Wood”。 
 
 
<actor>Ed Wood</actor> 
 
 
由于每个元素都有不同的标签名,所以你能很容易把上面两个元素的值区别开来。如果没 
有办法把数据标出来,两个有同样值的元素会混淆起来。 
 
 
返回 
 
处理XML文档 
 
一个基本的XML文档就是一个XML元素,它可以嵌套XML元素。例如,下面的XML元素“ 
books”就是一个有效的XML文档。 
 
 
<books> 
   <book isbn="0345374827"> 
      <title>The Great Shark Hunt</title> 
      <author>Hunter S. Thompson</author> 
   </book> 
</books> 
 
构建一个基本的XML文档需要记住关键的三点:所有元素必须有结束标签;所有元素必须 
正确的嵌套(不允许交迭元素);所有特征值必须加引号。 
 
 
返回 
 
处理XML数据岛 
什么是XML数据岛? 
 
数据岛是指存在于HTML页面中的XML代码。数据岛允许你在HTML页面中集成XML,对XML编 
写脚本,不需要通过脚本或<OBJECT>标签读取XML。几乎所有能够存在于一个结构完整的 
XML文档中的东西都能存在于一个数据岛中。包括处理指示、DOCTYPE声明和内部子集。( 
注意,编码串不能放在数据岛中。) 
 
 
数据岛的XML可以是内嵌的: 
 
 
<XML ID="XMLID"> 
   <customer> 
      <name>Herbert Hanley</name> 
      <custID>81422</custID> 
   </customer> 
</XML> 
 
或者在XML标签中通过SRC属性引用: 
 
 
<XML ID="XMLID" SRC="customer.xml"></XML> 
 
处理指导 
简单处理XML。把XML放到一个XML元素中,并且给这个XML元素一个ID。 
 
 
返回 
 
类似于文档对象访问一个XML数据岛 
什么是XML文档对象? 
 
XML文档对象是指一个拥有属性和方法的对象,你可以利用这些属性和方法访问和处理XML 
文档。当一个XML数据岛被读取和解析时,就会创建一个XML文档对象。 
 
怎样访问XML数据岛? 
 
下面是一个带有数据岛的HTML页面。数据岛在<XML>元素中。 
 
 
<HTML> 
   <HEAD> 
       <TITLE>HTML with XML Data Island</TITLE> 
   </HEAD> 
   <BODY> 
        <P>Within this document is an XML data island.</P> 
        <XML ID="resortXML"> 
            <resorts> 
                <resort>Calinda Cabo Baja</resort> 
                <resort>Na Balam Resort</resort> 
            </resorts> 
        </XML> 
   </BODY> 
</HTML> 
 
你能通过ID属性访问数据岛,“resortXML”成为文档对象的名称。你能利用这个对象的 
方法和属性访问它的根节点和孩子节点。在上面的例子中,根节点是<resorts>,孩子节 
点是<resort>。下面列出了一些属性和方法,可用来访问XML文档的节点。 
 
 
 
XMLDocument:返回对XML文档对象模式的引用。 
 
 
 
documentElement:返回XML文档的根节点。 
 
 
 
childNodes:返回节点的孩子节点目录。 
 
 
 
item:通过索引访问目录中的个别节点。索引值是从0开始的,所以item(0)返回第一个节 
点。 
 
 
 
text:返回节点的内容。 
 
 
 
下面的代码访问第二个孩子节点<resort>并返回它的内容“Na Balam Resort”。 
 
 
resortXML.XMLDocument.documentElement.childNodes.item(1).text 
 
 
返回 
 
访问XML对象模式 
什么是XML对象模式? 
 
微软IE5中的XML解析器揭示了XML对象模式,允许你访问和处理XML文档中的节点。当解析 
器读取并且解析一个XML文档时,它将建立一棵节点树,每个节点都能通过脚本来访问。 
 
 
 
例如,如果解析器读取并且解析下面的XML文档,它将创建一个能通过文档ID值 
(xmlDocument)被引用的文档对象,一个表现根节点的对象和一个表现树中其余节点的对 
象。 
 
怎样访问树中的节点? 
 
请试着在下面的数据岛中找出访问每个节点所需要的代码。 
 
 
<XML ID="xmlDocument"> 
      <class> 
           <student studentID="13429"> 
               <name>Jane Smith</name> 
               <GPA>3.8</GPA> 
           </student> 
      </class> 
</XML> 
 
返回 
 
在XML文档中使用数据类型 
什么是XML文档中的数据类型? 
 
微软提供的XML Schema版本支持数据类型。作为一项预先展示的技术,它对于那些想要用 
schema和丰富的数据类型构造原型和增长经验的开发者来说是很有用的。微软积极参与制 
定逐步形成的W3C的XML Schema标准。开发者需要注意这个版本的XML Schema是要变化的 
。在微软IE5当中,元素值能被指定数据类型。数据类型能够通过XML Schema或根据实际 
情况被指定。以前,XML元素值只有一种类型(字符串),所以开发者要处理XML文档必须 
花时间转换元素值。键入你的XML数据,解析器会进行数据类型转换。另外,由于元素值 
有特定的数据类型,所以元素值的改变也要符合数据类型。这给你提供了一种确认使用者 
输入的方法。 
 
如何指定XML元素值的类型? 
 
通过XML Schema指定元素值的类型,你必须在XML Schema的开头声明数据类型的名域和 
schema的名域。 
 
 
<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-micro 
soft-com:datatypes"> 
 
 
dt前缀用来在schema中表示指定数据类型的类型属性。 
 
 
<ElementType name="NUMBER" content="textOnly" dt:type="number"/> 
 
 
通过dt属性指定元素类型,你必须在XML文档的开头声明数据类型的名域。 
 
 
<NUMBERS xmlns:dt="urn:schemas-microsoft-com:datatypes"> 
 
 
dt前缀用来给一个元素的例子指定数据类型。 
 
 
<NUMBERS xmlns:dt="urn:schemas-microsoft-com:datatypes"> 
     <NUMBER dt:dt="number">44533</NUMBER> 
</NUMBERS> 
返回 
 
 
访问经过类型定义的XML值 
 
什么是经过类型定义的XML值? 
 
经过类型定义的XML值是指在XML Schema中被指定数据类型的元素值。XML解析器使用 
schema来确认文档。 
 
 
微软提供的XML Schema版本支持数据类型。作为一项预先展示的技术,它对于那些想要用 
schema和丰富的数据类型构造原型和增长经验的开发者来说是很有用的。微软积极参与制 
定逐步形成的W3C的XML schema标准。开发者需要注意这个版本的XML Schema是要变化的 
。 
 
 
除了拥有字符串值以外,每个XML元素也可以有经过类型定义的值。例如下面的XML元素: 
 
 
 
<date>1970-09-30</date> 
 
 
值可以是“1970-09-30”,也可以是经过类型定义的“Web Sep 30 00:00:00 PDT 1970. 
” 
 
如何访问经过类型定义的XML值? 
 
可以通过XML对象模式访问经过类型定义的数据。就好象你能根据元素节点的节点值性质 
找到元素值一样,你能根据元素本身的节点类型值找到经过类型定义的元素值。 
 
 
例如,考虑一下下面的XML文档: 
 
 
<?xml version="1.0"?> 
<weather xmlns="x-schema:weatherSchema.xml"> 
      <date>1970-09-30</date> 
      <degrees>67.5</degrees> 
</weather> 
 
“weatherSchema.xml”是下面这个文件: 
 
 
<Schema xmlns="urn:schemas-microsoft-com:xml-data"xmlns:dt="urn:schemas-micros 
oft-com:datatypes"> 
       <ElementType name="date" content="textOnly" dt:type="date"/> 
       <ElementType name="degrees" content="textOnly" dt:type="float"/> 
       <ElementType name="weather" content="eltOnly"/> 
           <element type="date"/> 
           <element type="degrees"/> 
       </ElementType> 
</Schema> 
 
如果你要处理“degrees”这个元素(xmlDocument.documentElement.childNodes.item(1 
)),你可以根据节点类型值来访问它的值(xmlDocument.documentElement.childNodes. 
item(1).nodeTypedValue)。 
 
 
返回 
 
XML Schema 
 
什么是XML Schema? 
 
W3C XML Activity Page 声明:“尽管XML1.0提供了一种机制,文档类型定义(DTD)给 
标记的使用加了限制,但是对XML文档的自动处理需要更严格更全面的工具。需要主要体 
现在对应用软件各部分的结合、文档结构、属性和数据类型等等的约束。W3C XML Schema 
工作组正忙于定义XML文档的结构、内容和语义。” 
 
 
微软IE5支持XML Schema,这项预先展示的技术是建立在递交给W3C的XML-Data草案的基础 
上的。XML Schema可被认为是XML-Data草案的子集,它符合文档内容描述(DCD)提议的 
特点。 
 
 
IE5中的XML解析器能够根据文档类型定义(DTD)或XML Schema解析XML文档。XML Schema是 
用来声明内容模式的基于XML的语法。它有DTD所有的功能,并且还有其他的功能如数据类 
型定义。 
 
如何建立XML Schema? 
 
请在下面的XML文档中找一找每个节点的schema声明。 
 
 
<class xmlns="x-schema:classSchema.xml"> 
      <student studentID="13429"> 
         <name>Jane Smith</name> 
         <GPA>3.8</GPA> 
     </student> 
</class> 
 
你会注意到在上面文档中默认的名域是“x-schema:classSchema.xml”。这告诉解析器根 
据URL(“classSchema.xml”)上的schema(x-schema)来解析整个文档。 
 
 
下面是上面那个文档的完整的schema。注意schema的根元素中的名域声明。第一个 
(xmlns=”urn:schemas-microsoft-com:xml-data”)表明这个XML文档是一个XML Schema 
。第二个(xmlns:dt=”urn:schemas-microsoft-com:datatypes”)允许schema处理者在“ 
ElementType”和“AttributeType”声明中的“type”属性前加“dt”前缀来说明元素的 
类型和内容的特征。 
 
 
<Schema  xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-micr 
osoft-com:datatypes"> 
     <AttributeType name='studentID' dt:type='string' required='yes'/> 
     <ElementType name='name' content='textOnly'> 
     <ElementType name='GPA' content='textOnly' dt:type='float'/> 
     <ElementType name='student' content='mixed'> 
         <attribute type='studentID'/> 
         <element type='name'/> 
         <element type='GPA'/> 
     </ElementType> 
     <ElementType name='class' content='eltOnly'> 
         <element type='student'/> 
     </ElementType> 
</Schema> 
 
schema用“Schema”元素开头,“Schema”元素包括schema名域的声明,在本例中还包括 
数据类型名域的声明。Schema的内容以“AttributeType”和“ElementType”的声明开头 
。 
 
 
<AttributeType name='studentID' dt:type='string' required='yes'/> 
<ElementType name='name' content='textOnly'><ElementType name='GPA'  
content='textOnly' dt:type='float'/> 
 
这些声明接下来的是刚声明过元素的父亲元素的“ElementType”声明。 
 
 
<ElementType name='student' content='mixed'> 
     <attribute type='studentID'/> 
     <element type='name'/> 
     <element type='GPA'/> 
</ElementType> 
 
这个过程继续下去,直到所有元素都已经声明了。 
 
 
不同于DTDs,XML Schema允许有一个开放的内容模式,你可以进行定义数据类型、使用默 
认值等等操作而不必限定内容。 
 
 
在下面的schema中,“GPA”元素的类型被定义并有一个默认值,但在“student”元素中 
没有其他节点被声明。 
 
 
<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-micro 
soft-com:datatypes"> 
      <AttributeType name="scale" default="4.0"/> 
      <ElementType name="GPA" content="textOnly" dt:type="float"> 
         <attribute type="scale"/> 
      </ElementType> 
      <AttributeType name="studentID"/> 
      <ElementType name="student" content="eltOnly" model="open"  
order="many"> 
         <attribute type="studentID"/> 
         <element type="GPA"/> 
      </ElementType>  
</Schema> 
 
上面的schema允许你只确认你所关心的区域。这使你对文档有更多的控制,并允许你使用 
schema提供的一些特性而不必严格确认。 
 
 
一些说明: 
 
 
 
“ElementType”和“AttributeType”声明必须放在“attribute”和“element”内容声 
明之前。例如,在上面的schema中,“GPA”元素的“ElementType”声明必须放在“ 
student”元素的“ElementType”声明之前。  
 
 
“order”属性的默认值是建立在“content”属性的值上的。当content值为“eltOnly” 
时,order默认值是“seq”。当content值为“mixed”时,order默认值是“many”。  
 
 
返回 
 
  
  
 
------------------------------------------------------------------------------ 
-- 
 
[返回标题][返回资源][返回首页][欢迎投稿] 
 
最后更新:1999年8月25日 
本站点所刊文章版权,均归本站点所有。署名作者拥有其著作权。 
未经允许,不得随意转载,违者必究!!  
 
www.xml.org.cn 
 
  
  
 
 
-- 
※ 修改:·veb 於 Apr 15 16:01:37 修改本文·[FROM:  202.112.99.209] 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]  
上一篇 返回上一页 回到目录 回到页首

BBS 水木清华站∶精华区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值