码迷,mamicode.com
首页 > 编程语言 > 详细

javaSE学习笔记Schema语法(4)

时间:2015-03-11 14:25:26      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

命名空间的概念:类似java中的包。命名空间即元素的命名的一个区间。该区间可以指定名字也可以使用默认的名字。

那么如果要使用Schema编写代码来约束XML文件,那么Schema中必须预先的定义好约束的标签名。但是这些标签又不同于普通的标签因此需要指定命名的空间名。

xmlns:xs="http://www.w3.org/2001/XMLSchema"

该元素是一个属性,该属性必须出现在约束文件的根元素中。

u  引入约束文件(重点)

  1. 在约束文件的根元素上添加命名空间属性指定所有的约束元素的来自区域
  2. 在约束文件的根元素上添加elementFormDefault=” qualified”指定全局约束
  3. 在约束文件的根元素上添加targetNamespace="URL地址"来指定定义好的约束的名字
  4. 在被约束文件的根元素中使用xmlns:命名空间名来引入指定的约束

   <书架 xmlns:jnb="http://www.jnb.com">

  1. 在被约束文件中将所有的元素以4中起的命名空间名作为元素的前缀
  2. 在被约束文件的根元素上使用xsi:schemaLocation="http://www.jnb.com mybooks.xsd"指定约束的具体文件路劲
  3. 在被约束文件的根元素使用xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

来指定6中的schemaLocation来自的区域

u  DTD基本语法(了解)

  1. 元素约束

语法:

<xs:element name="xxx" type="yyy"/>
name      指定元素名
type        指定元素类型
常用的元素类型:
xs:string         字符串
xs:decimal     小数
xs:integer     整数
xs:boolean     布尔
xs:date         日期
xs:time        时间

举例1:描述一个元素为小数类型

<xs:element name=‘售价‘ type="xs:decimal" />

  1. 属性约束

语法:

<xs:element name="xxx" type="yyy">
<xs:attribute name="xxx" type="yyy"/>
</xs:element>
name      指定属性名
type        指定属性类型
常用的元素类型:
xs:string         字符串
xs:decimal     小数
xs:integer     整数
xs:boolean     布尔
xs:date         日期
xs:time        时间

举例2:给书添加一个isbn的属性。

<xs:attribute name="isbn" type="xs:string" use="required"/>

  1. 限定

一般限定的是元素取值的一个范围。如下:

<xs:element name="age">
<xs:simpleType>
     <xs:restriction base="xs:integer">
        <xs:minInclusive value="0"/>
        <xs:maxInclusive value="120"/>
     </xs:restriction>
</xs:simpleType>
</xs:element>
举例3:限定售价的值在0~120之间。
<xs:element name="售价">
<xs:simpleType>
  <xs:restriction base="xs:integer">
    <xs:minInclusive value="0"/>
    <xs:maxInclusive value="120"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

4. 复杂类型定义

有四种类型的复合元素:

空元素                               带属性

包含其他元素的元素          带属性

仅包含文本的元素             带属性

包含元素和文本的元素       本身就是

复杂类型元素的定义语法

<xs:element name="employee">        ? 定义元素
  <xs:complexType>                ? 定义复杂类型
    <xs:sequence>                    ? 定义以顺序的方式显示
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

5. 混合类型数据定义

<xs:element name="letter">
  <xs:complexType mixed="true">      ? 既有元素又有文本。如: DTD中的ANY
    <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="orderid" type="xs:positiveInteger"/>
      <xs:element name="shipdate" type="xs:date"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
  1. 指示器

顺序指示器

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>                ? 包含的元素师按照顺序出现的
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
次数指示器
<xs:element name="child_name" type="xs:string" maxOccurs="10"/>     

案例二 : 根据一个已有的XSD文件编写一个有效的XML文件

1. 编写一个已有的xsd文件shiporder.xsd
<?xml version="1.0" encoding="ISO-8859-1" ?>
<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>
2. 实现根元素的属性引入
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.jnb.com"
           elementFormDefault="qualified">
3. 实现有效的xml文件shiporder.xml
<?xml version="1.0" encoding="UTF-8"?>
<jnb:shiporder orderid="001"
   xmlns:jnb="http://www.jnb.com"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.jnb.com shiporder.xsd">
   <jnb:orderperson></jnb:orderperson>
   <jnb:shipto>
     <jnb:name></jnb:name>
     <jnb:address></jnb:address>
     <jnb:city></jnb:city>
     <jnb:country></jnb:country>
   </jnb:shipto>
   <jnb:item>
     <jnb:title></jnb:title>
     <jnb:note></jnb:note>
     <jnb:quantity></jnb:quantity>
     <jnb:price></jnb:price>
   </jnb:item>
</jnb:shiporder>
? 多学一招:思考集成开发环境中的web.xml文件配置的信息提示是如何实现的?
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     ? 引入Schema约束
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
       http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">   <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

练习

  1. 自己将W3C中XML和DTD的教程全部看完。
  2. 将w3c中DTD实例中没有写过的有效XML文件全部写完。
  3. 将w3c中Schema实力中没有写过的有效XML文件全部写完。【问题】
  4. 建立一个XML文件linkmans.xml将其中的Linkman封装为对象并存储在集合中返回。

javaSE学习笔记Schema语法(4)

标签:

原文地址:http://www.cnblogs.com/zhenghongxin/p/4329729.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!