关闭顶部展开顶部

XML学习笔记(四)Schema介绍篇_Xml教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:XML学习笔记(五)Schema语法之简单类型
Preface:本文是W3CSchools上《Schema指南》的学习笔记。其中大部分内容是对指南的翻译总结。由于原文的例子更详尽生动,如果各位想阅读原文可以到这个网址http://www.w3schools.com/schema/default.asp。 同时,W3CSchools提供了测试,大家可以测试一下自己

一、概述

XML Schema用于描述XML文档结构的文件。另一种用于该用途的文件(技术)是DTD。XML Schema有时又称为XML Schema Definition,所以也会称为XSD。因此Schema文件是以xsd为后缀的。

下面详细的说明一下所谓的“定义XML文档结构结构”的意义。
  • 定义可以出现在文档中的Element。
  • 定义可以出现在文档中的Attribute。
  • 定义哪些Element是子元素。
  • 定义Element的顺序。
  • 定义子元素的数目。
  • 定义一个元素是否能为空,是否能包含文本。
  • 为每个Element和Attribute定义数据类型。
  • 为Element和Attribute定义默认值和固定值。
因为有了以上的定义,我们才能更清晰的使用XML描述我们要表达的内容。使XML的接受方能更容易明白内容的含义。

Schema和DTD的比较
可以说Schema是DTD的替代品,虽然作用一样,但Schema是比DTD更新,更好的一种技术,因为:

  • Schema是可扩展的,可以随着将来的需要进行扩展。 (可以在其他的Schema中重用现有的Schema;从标准类型中派生创建你自己的数据类型;在同一文档中引用多个Schema。)
  • Schema是用XML编写的。 (因此你无需重新学习一种语言;你可以使用XML的编辑器对Schema进行编辑;可以使用XML Parser去分析Schema;可以使用XML DOM去操作Schema;可以使用XSLT对Schema进行转换。)
  • Schema支持数据类型。 (从而能更好的描述文档支持的内容;更好的验证文档的有效性;更好的与数据库进行数据交互;更好的定义数据约束;更好的定义数据格式;更好的支持各类型数据间的转换。)
  • Schema支持命名空间。
更重要的是Schema是W3C推荐的标准。

二、在XML文档中引用Schema

<?xml version="1.0"?>
<note
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

以上的XML文件引用了note.xsd的Schema文件进行结构定义,这样Parser会根据该Schema文件对XML进行有效性检验。显然关键的地方是文档根元素“note”中属性的定义。下面解析相关属性的意义。

xmlns="http://www.w3schools.com"
说明文档的默认命名空间是“http://www.w3schools.com”。关于命名空间的作用,在XML学习笔记(三)中有介绍。

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
这里定义一个Schema的实例命名空间。只有作了这个定义才能使用schemaLocation属性。xsi是XML Schema Instance的意思。

xsi:schemaLocation="http://www.w3schools.com note.xsd"
如上所述,因为我们已经定义了xsi命名空间所以可以使用schemaLocation属性了。schemaLocation属性由成对的值组成可以有多对。(因为一个XML文档可以有多个命名空间,所以schemaLocation值可以有多对)第一个值“http://www.w3schools.com”是要使用schema进行有效验证的命名空间的元素。第二个值“note.xsd”是要使用的schema文档的路径。

以下是中国XML论坛的两篇贴子可以作为参考和补充:
http://bbs.xml.org.cn/dispbbs.asp?boardID=23&ID=37706
http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=9270

三、Schema文档的基本结构

首先给出一个完整的Schema文档
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

首先必须强调的是<schema>元素是Schema文档的根元素。注意大小写,Schema也是XML,XML是大小写敏感的。<schema>Element的所有子元素都是用于定义XML文档结构的。具体的语法在下篇介绍。在这里我们集中关注<schema>的属性。

xmlns:xs="http://www.w3.org/2001/XMLSchema"
这里指明了一个命名空间“http://www.w3.org/2001/XMLSchema”。同时定义了一个前缀“xs”。<schema>自己和所有子元素都使用“xs”前缀,说明属于该命名空间。

targetNamespace="http://www.w3schools.com"
targetNamespace是目标命名空间。这语句说明,这个Schema定义的元素(note, to, from, heading, body)是来自“http://www.w3schools.com”这个命名空间的。从另一个角度可以理解为,引用这个Schema进行有效性验证的XML的元素应该是使用该命名空间的。

xmlns="http://www.w3schools.com"
因为Schema也是XML。这语句说明这个XML的默认命名空间是“http://www.w3schools.com”。

elementFormDefault="qualified"
这句表示在本Schema中定义的Element,如果在XML实例文档出现的话,都要进行命名空间匹配。

同样给出一篇中国XML论坛的帖子作为参考和补充:
http://bbs.xml.org.cn/dispbbs.asp?boardID=23&ID=35354
 

分享:浅析XMLHTTPRequest的属性和方法
由于现在在公司负责制作标准的静态页面,为了增强客户体验,所以经常要做些AJAX效果,也学你也和我一样在,学习AJAX。而设计AJAX时使用的一个重要的技术(工具)就是XMLHTTPRequest对象了。这里海啸把我学习XMLHTTPRequest对象的一点资料拿出来跟大家一起分

来源:模板无忧//所属分类:Xml教程/更新时间:2010-02-05
相关Xml教程
闂佹眹鍩勯崹閬嶆偤閺囶澁缍栭柛鈩冪⊕閳锋帗銇勯弴妤€浜惧銈忕秶閹凤拷
濠电偛顕慨顓㈠磻閹炬枼妲堥柡鍌濇硶婢ф稒淇婇懠顒夆偓婵嬫煟閵忊晛鐏查柟鍑ゆ嫹
濠电姷顣介埀顒€鍟块埀顒勵棑缁辩偛顓兼径瀣閻庣懓瀚竟鍡欐崲娑斾線鏌i姀鈺佺伈闁瑰嚖鎷�
濠电姷顣介埀顒€鍟块埀顒勵棑缁辩偛顓兼径濠勵吋闂佽鍨庨崟顓фК闂佽閰eḿ褍螞濞戙垺鍋夐柨鐕傛嫹
闂備胶枪缁绘劙骞婃惔銊ョ劦妞ゆ帒鍊哥敮鍫曞箹鐎涙ḿ鐭掔€规洘绻堥弫鎾绘晸閿燂拷
闂備胶枪缁绘劙骞婃惔銊ョ劦妞ゆ巻鍋撻柛姘儑缁﹪鏁傞崜褏鐓撻柣搴岛閺呮繈鎯屽▎鎴犵=濞撴艾锕ョ€氾拷
闂備浇銆€閸嬫挻銇勯弽銊р槈闁伙富鍣i弻娑樷攽閹邦亞鑳虹紓浣靛妽濡炶棄顕i妸鈺婃晬婵炲棙鍨电粭锟犳⒑閸濆嫬鈧骞婇幘鑸殿潟闁跨噦鎷�
闂備礁鎼崯鐗堟叏妞嬪海绀婂鑸靛姈閻擄綁鎮规潪鎷岊劅婵炲眰鍊曢湁闁挎繂妫欑粈鈧梺鍛娚戦悧鐘茬暦閹扮増鏅搁柨鐕傛嫹
婵犵妲呴崹顏堝礈濠靛棭鐔嗘俊顖氬悑鐎氱粯銇勯幘瀵哥畺閻庢熬鎷�
濠电姷顣介埀顒€鍟块埀顒勵棑缁辩偛顓奸崶銊ヮ伕濡炪倖鎸荤换鍐偓姘虫珪娣囧﹪顢涘Δ鈧晶鍙夌節椤喗瀚�
婵犵妲呴崹顏堝礈濠靛棭鐔嗘慨妞诲亾鐎规洦鍓熼、娆撳礂閻撳簶鍋撻悽鍛婄厸闁割偅绻勫瓭婵犳鍣幏锟�
婵犵妲呴崹顏堝礈濠靛棭鐔嗘慨妞诲亾闁哄苯鎳橀崺鈧い鎺嗗亾闁宠閰i獮鎴﹀箛闂堟稒顔嗛梻浣告惈鐎氭悂骞忛敓锟�
婵犵妲呴崹顏堝礈濠靛棭鐔嗘慨妞诲亾鐎规洩缍侀獮瀣攽閸偂绱�
濠电姷顣介埀顒€鍟块埀顒勵棑缁辩偛顓兼径濠勭厬闂佺懓鐡ㄧ换鍕敂鐎涙ü绻嗘い鏍殔婢у弶绻濋~顔藉
闂佽楠搁崢婊堝礈濠靛鍋嬮柟鎯版閻鈹戦悩鎻掓殭闁奸潧缍婇弻銈夋嚍閵夈儱顫嶉梺缁樼壄缂嶄礁鐣峰▎鎾存櫢闁跨噦鎷�
UB闂備礁婀辩划顖炲礉濡ゅ懐宓侀柛銉㈡櫆鐎氭岸鎮楀☉娅虫垿锝為敓锟�
闂備浇澹堟ご绋款潖婵犳碍鐒鹃悗鐢电《閸嬫捇鐛崹顔句痪濠电姭鍋撻柨鐕傛嫹
闂佽楠哥粻宥夊垂閸濆嫸鑰块柛銏㈠殰
闂備礁鎲″缁樻叏妞嬪海绀婂璺虹灱閸楁碍绻涢崱妤€顒㈤柛鐐差槹缁绘稓绱欓悩鍝勫帯闂佺ǹ楠忛幏锟�
缂傚倸鍊烽悞锕傛偡閿曞倸鍨傛繝濠傚椤╅攱銇勯幒宥囶槮缂佹彃婀遍埀顒傚仯閸婃繄绱撳棰濇晩闁跨噦鎷�
©2017 www.mb5u.com婵犵妲呴崹顏堝礈濠靛棭鐔嗘慨妞诲亾鐎殿噮鍣i幃鈺呭箵閹烘挸鐦�
闂備浇銆€閸嬫捇鏌熼婊冾暭妞ゃ儻鎷�&闂備礁鎲$敮鎺懳涢弮鍫燁棅闁跨噦鎷�