Schema基础
来源:互联网 发布:java大括号转义字符 编辑:程序博客网 时间:2024/04/30 13:10
1. Schema入门案例
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www. itcast.cn"
elementFormDefault="qualified">
<xs:element name='书架' >
<xs:complexType>
<xs:sequence maxOccurs='unbounded' >
<xs:element name='书' >
<xs:complexType>
<xs:sequence>
<xs:element name='书名' type='xs:string' />
<xs:element name='作者' type='xs:string' />
<xs:element name='售价' type='xs:string' />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
先解释文档内容,在解释schema名字空间
targetNamespace="http://www. itcast.cn" elementFormDefault="qualified">
将本文档中所有的标签全部都绑定到目标名字空间"http://www. itcast.cn"上
<?xml version="1.0" encoding="UTF-8"?>
<itcast:书架 xmlns:itcast="http://www.itcast.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=“http://www.itcast.cn book.xsd">
<itcast:书>
<itcast:书名>JavaScript网页开发</itcast:书名>
<itcast:作者>张孝祥</itcast:作者>
<itcast:售价>28.00元</itcast:售价>
</itcast:书>
</itcast:书架>
itcast : 解释书架来自itcast,那么itcast来自哪里呢
itcast来自于: xmlns:itcast=”http://www.itcast.cn”
xmlns:名字空间
http://www.itcast.cn在这里只是一个绑定的名字而已,并不是具体指某个网址,那么http://www.itcast.cn到底绑定了些什么呢?
xsi:schemaLocation=“http://www.itcast.cn book.xsd"
在这里使用schemaLocation属性明确的说明了是book.xsd这个约束文件绑定到了http://www.itcast.cn这个名字空间上。但是schemaLoaction又是来自哪里呢,它的前缀是xsi,那么xsi又是代表什么样的一个东西呢?
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
在这里有声明了一个名字空间,而且xsi就是它的前缀,也就是说上一步中schemaLocation这个属性是来自于绑定到这个名字空间的约束文件的。
那么这里有需要进一步考虑,绑定在这个名字空间的文件到底是谁呢,是不是也需要象刚刚的book.xsd一样用schemaLocation属性来声明呢?答案是不需要,因为这个名字空间来自于schema标准的制定者,可以简单的理解为它是总所周知的,不需要在明确指定了。
2. 使用默认名称空间
基本格式: xmlns="URI"
一般声明名字空间格式为:xmlns:class3g = “URI” ,但此时不会指定前缀
举例:
<书架 xmlns="http://www.class3g.org/xmlbook/schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=“http://www.class3g.cn book.xsd">
<书>
<书名>JavaScript网页开发</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
</书>
</书架>
如果不适用默认名字空间应为
<class3g:书架 xmlns:class3g="http://www.class3g.org/xmlbook/schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=“http://www.class3g.cn book.xsd">
< class3g:书>
< class3g:书名>JavaScript网页开发</ class3g:书名>
< class3g:作者>张孝祥</ class3g:作者>
< class3g:售价>28.00元</ class3g:售价>
</ class3g:书>
</ class3g:书架>
3. 使用名称空间引入多个XML Schema文档
文件清单:xmlbook.xml
<?xml version="1.0" encoding="UTF-8"?>
<书架 xmlns="http://www.it315.org/xmlbook/schema"
xmlns:demo="http://www.it315.org/demo/schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.it315.org/xmlbook/schema http://www.it315.org/xmlbook.xsd
http://www.it315.org/demo/schema http://www.it315.org/demo.xsd">
<书>
<书名>JavaScript网页开发</书名>
<作者>张孝祥</作者>
<售价 demo:币种=”人民币”>28.00元</售价>
</书>
</书架>
此文档中同时引入了三个约束文档,
一个默认的名字空间:xmlns="http://www.it315.org/xmlbook/schema
一个叫demo的名字空间:xmlns:demo=http://www.it315.org/demo/schema
一个著名的名字空间:xsi:schemaLocation="http://www.it315.org/xmlbook/schema
著名的名字空间xsi不需要指定绑定的约束文件,所以schemaLocation属性中只需声明两外两个约束文件即可:
xsi:schemaLocation="http://www.it315.org/xmlbook/schema http://www.it315.org/xmlbook.xsd
http://www.it315.org/demo/schema http://www.it315.org/demo.xsd"
另外在
<售价 demo:币种=”人民币”>28.00元</售价>
其中“售价”这个标签来自于默认名字空间xmlns="http://www.it315.org/xmlbook/schema
而属性“币种”却来自于demo,xmlns:demo=http://www.it315.org/demo/schema
4. 不使用名称空间引入XML Schema文档
文件清单:xmlbook.xml
<?xml version="1.0" encoding="UTF-8"?>
<书架 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="xmlbook.xsd">
<书>
<书名>JavaScript网页开发</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
</书>
</书架>
其中各标签并没有声明源自于那个名字空间,也没有定义默认名字空间,而是使用属性xsi:noNamespaceSchemaLocation="xmlbook.xsd" 直接声明这些标签不使用名字空间,而且直接受到xmlbook.xsd文件的约束
这种声明了解即可,一般不用。
Schema使用案例
打开tomcat的web.xml文件,分析器名字空间声明。
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
XSD 简单元素
XSD 属性
<xs:attribute name="lang" type="xs:string"/>不需要特别声明属性是谁的,因为会被嵌套在属性所有者的标签内部。
XSD类型指示器
案例:
分析xsd文件,写出xml
shipOrder.xsd
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="orderid" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
shipOrder.xml
<?xml version="1.0" encoding="UTF-8"?>
<shiporder xmlns="http://www.class3g.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.class3g.com shipOrder.xsd"
orderid="3">
<orderperson>Tom</orderperson>
<shipto>
<name>xxx</name>
<address>asdff.asdf</address>
<city>pk</city>
<country>jap</country>
</shipto>
<item>
<title>asd </title>
<note>ssssssss</note>
<quantity>3</quantity>
<price>20.3</price>
</item>
</shiporder>
- Schema基础
- Schema基础
- XML Schema 基础
- XML Schema 基础
- sqlserver基础:database schema user
- XML - Schema之基础示例
- spring基础说明01-schema
- XML语言基础3--Schema
- SAP HR Schema 详解(一)Payroll schema基础
- 关于xml Schema的基础总结
- Webservice(基础)——schema
- xml基础、DTD验证、Schema验证
- Schema
- schema
- Schema
- schema
- Schema
- Schema
- 正则表达式30分钟入门教程
- C++程序例子
- 水仙花数/素数
- blender 快捷
- Android的消息处理机制(图+源码分析)——Looper,Handler,Message
- Schema基础
- 单元测试实践的主要问题与解决(1)
- something about html
- gawk 学习笔记
- UC故事2011/11/28
- 移植 bullseye coverage—arm 版本
- 提示找不到程序集
- 合肥好大雾!
- 傻瓜机英语口语初级版