[原] XML schema教程 XSD教程 XSL教程 XSLT教程 (一)
XML/DTD/XSD/XSLT 2008-01-14 04:01:04 阅读2226 评论4 字号:大 中 小
[ 本教程适用对象 ]: 具有XML基本知识的朋友;
[ 版权声明 ]: 一切版权归yyjacky412所有. 可以任意转载,方便时请加上出处
[ 学习必备工具 ]: 记事本+IE(基本不推荐) | 使用Altova XMLSpy(本教程使用XMLSpy) | 使用XMLWriter
第一部分: XML+XSD教程
XML能使用DTD进行验证,也能使用XSD,W3C组织更推荐使用XSD.
1-1 不带命名空间的XSD:
1-1.xml
<?xml version="1.0" encoding="gb2312"?>
<美女 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
xsi:noNamespaceSchemaLocation="1-1xsd.xsd">
美女全走光了
</美女>
1-1xsd.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema ">
<xs:element name="美女"/>
</xs:schema>
1-1例子为我们演示了不带命名空间的最简单的XSD及其在Xml源文件中的引用方法
不带命名空间的Xml中要使用XSD进行验证,我们注意以下几点:
a.:xmlns:xsi与xsi:noNamespaceSchemaLocation 这两个一定要带上,
而且只能是xsi,不能是xsd或自己取的任意前缀
b:一定要注意大小写, 拼错一个字符就会导致错误
在XSD验证文件中,我们要注意
c:根元素有且必须是<xs:schema>
d:xs前缀可以不同,你可以取为xsd,xsm,或者符合xml语法规定的任意单词
e:<xs:element>声明了element元素,这个元素对应着1-1.xml中的根元素, 它的名字叫美女name="美女"
f:特别提醒:以上两个文件中关于www.w3.org 的超链接,一定不能错,要十分注意大小写.
1-2 带命名空间的XSD:
我们只对1-1例子做小小改动,方便朋友们做对比,重点是学习XML文件如何引用xsd及xsd文件的schema根元素的写法
1-2.xml
<?xml version="1.0" encoding="gb2312"?>
<my:美女 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
xmlns:my="http://yyjacky412.blog.163.com "
xsi:schemaLocation="http://yyjacky412.blog.163.com 1-2xsd.xsd">
美女全走光了
</my:美女>
1-2xsd.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema "
xmlns="http://yyjacky412.blog.163.com "
targetNamespace="http://yyjacky412.blog.163.com ">
<xs:element name="美女"/>
</xs:schema>
我们注意到 与1-1例子相比,1-2例子多了点东西
a。xml文件中多了my 前缀, 相应的xmlns:my=" http://yyjacky412.blog.163.com "声明了这个my前缀,xmlns:前缀是我们曾经学过的声明命名空间前缀的语句,很熟悉了
b。声明xsd文件的地方也变了,变成了xsi:schemaLocation=" http://yyjacky412.blog.163.com 1-2xsd.xsd ",xsi:schemaLocation这里说明是带命名空间的xsd引用方式, 双引号里面的东西挺有趣,他是有一个命名空间+空格+xsd文件名组成的, 三者缺一不可, 这里的地址要与xmlns:my里的一致才行
c。XSD文件部们,多出了两个东西,一个是xmlns命名空间出来了,一个是targetNamespace属性也要写上一样的命名空间地址
1-3 学习schema中的各种元素(下次讲解)
schema中常用的元素有以下数种
schema element group attribute attributeGroup choice simpleType complexType
union unique sequence restriction
其中,我们最常用的七个元素我们将做重点讲解,在实际的NET+XML+XSLT、J2EE的struts+Hiberite+XML+XSLT中,99%的时间里我们都是和这 "天山七剑" 打交道
下篇我们对这七剑做详尽例子讲解.