Chinaunix首页 | 论坛 | 博客
  • 博客访问: 703757
  • 博文数量: 147
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1725
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-22 10:36
文章分类

全部博文(147)

文章存档

2011年(1)

2010年(1)

2009年(35)

2008年(110)

我的朋友

分类: Java

2008-12-18 17:18:15

1.XML声明:
 

<?xml version="1.0" encoding="GBK" standalone="yes"?>

standalone是可选的,用于指定文档是否引用外部资源

2.CDATA

在CDATA内部的所有内容都会被解析器忽略,如果文本包含了很多的"<"字符和"&"字符——就象程序代码一样,那么最好把他们都放到CDATA部件中,一个 CDATA 部件以""标记结束

<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1
}
else
{
return 0
}
}
]]>
</script>

文本和实体:

不合法的XML字符必须被替换为相应的实体

如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该象下面那样书写代码:

if salary < 1000 then

为了避免出现这种情况,必须将字符"<" 转换成实体,象下面这样:

if salary < 1000 then

下面是五个在XML文档中预定义好的实体:

< < 小于号
> > 大于号
& &
' ' 单引号
" " 双引号

实体必须以符号"&"开头,以符号";"结尾。

3.XML命名空间

例如:

<?xml version="1.0" encoding="GBK"?>
<!-- 此XML文档描述一个电影库 -->
<library xmlns="">
    <电影 id="1">
        <名字>投名状</名字>
        <格式>DVD</格式>
    </电影>
    <电影 id="2">
        <名字>集结号</名字>
        <格式>VCD</格式>
    </电影>
</library>

4.文档类型定义

文档类型定义也叫DTD文件,用于规范XML文档文件的标准!一个完整的DTD文件如下:

<?xml version="1.0" encoding="GBK"?>
<!ELEMENT 根元素(所包含的子元素)>
<!ELEMENT 子元素(所包含的元素)>
<!ATTLIST 需要增加属性的元素 属性名称 属性类型 默认值>
<!ENTITY 实体名称 “实体值”>

声明元素类型:

                  

   无符号白哦是此元素至少出现一次
 ?  规定元素为可选,如果出现只能出现一次
 +  规定元素至少出现一次
 ,  规定子元素出现的顺序
 | 允许从一组元素中选一个元素 
 ()  将内容标记为一组
 *  规定元素为可选,如果出现多次或者零次

如果是空元素则定义如下:

如果元素中的内容是文本,定义如下:

19-1.xml

<?xml version="1.0" encoding="GBK"?>
<!-- 此XML文档描述一个电影库 -->
<library>
    <电影 id="1">
        <名字>投名状</名字>
        <格式>DVD</格式>
    </电影>
    <电影 id="2">
        <名字>集结号</名字>
        <格式>VCD</格式>
    </电影>
</library>

19-3.dtd:
<?xml version="1.0" encoding="GBK"?>
<!ELEMENT library (电影+)>
<!ELEMENT 电影 (名字,格式)>
<!ATTLIST 电影 id ID #REQUIRED>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 格式 (#PCDATA)>

声明属性列表:

默认值参数如下:

#REQUIRED 属性值是必须的

#IMPLED  属性不是必须的

#FIXED value:属性值为固定的value值,value由自己设定值

为19-3.dtd增加DTD文档声明属性:

<?xml version="1.0" encoding="GBK"?>
<!ELEMENT library (电影+)>
<!ELEMENT 电影 (名字,格式)>
<!ATTLIST 电影 id ID #REQUIRED>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 格式 (#PCDATA)>

声明实体:

实体名称是任意用来表示实体值的字符,实体值是用来被表示的值。例如:

在xml中用一下方式引用:&tmz

在xml中关联DTD文档:

引用方式:

嵌套方式:

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE 根元素 [
<!ELEMENT library (电影+)>
<!ELEMENT 电影 (名字,格式)>
<!ATTLIST 电影 id ID #REQUIRED>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 格式 (#PCDATA)>
]>
<!-- 此XML文档描述一个电影库 -->
<library>
    <电影 id="1">
        <名字>投名状</名字>
        <格式>DVD</格式>
    </电影>
    <电影 id="2">
        <名字>集结号</名字>
        <格式>VCD</格式>
    </电影>
</library>

XML Schema

定义xml文档的合法构建模块,也称为xml模式。

xs:string 字符串类型

xs:decimal 十进制数据类型

xs:integer 整数类型

xs:boolean 布尔类型

xs:date  日期类型

xs:time  时间类型

19-6.xml

<?xml version="1.0" encoding="GBK"?>    
<!--为下面的XML元素增加简单元素-->
<root>
<name>Tom</name>
<age>DVD</age>
<born>1981-02-14</born>
</root>

19-6.xsd
<?xml version="1.0" encoding="GBK" ?>
<xs:schema xmlns:xs="">
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="born" type="xs:date"/>
</xs:schema>

定义XSD属性

指定默认属性值:

指定固定属性值:

在属性没有指定为必须的时候,默认为可选,指定属性为必须的

定义xsd限定xml内容:例子:

19-7.xsd

<?xml version="1.0" encoding="GBK" ?>
<xs:schema xmlns:xs="">
  <xs:element name="size">
    <xs:simpleType>
      <xs:restriction base="xs:integer">
        <xs:minInclusive value="0"/>
        <xs:maxInclusive value="100"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
</xs:schema>

定义xsd复合元素

为19-8.xml定义文档声明xsd复合空元素:

19-8.xml

<?xml version="1.0" encoding="GBK" ?>
<id id="1"/>

19-8.xsd
<?xml version="1.0" encoding="GBK" ?>
<xs:schema xmlns:xs="">
  <xs:element name="id" type="idtype"/>
    <xs:complexType name="idtype">
    <xs:attribute name="id" type="xs:positiveInteger"/>
  </xs:complexType>
</xs:schema>

为19-9.xml声明xsd仅含元素的元素:

<?xml version="1.0" encoding="GBK" ?>
<person>
  <id>1</id>
  <name>Tom</name>
</person>

?xml version="1.0" encoding="GBK" ?>
<xs:schema xmlns:xs="">
  <xs:element name="person" type="persontype"/>
    <xs:complexType name="persontype">
      <xs:sequence>
        <xs:element name="id" type="xs:integer"/>
        <xs:element name="name" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
</xs:schema>

为19-10.xml声明xsd仅含文本的元素:

<?xml version="1.0" encoding="GBK" ?>
<size color="red">41</size>

<?xml version="1.0" encoding="GBK" ?>
<xs:schema xmlns:xs="">
<xs:element name="size" type="shoetype"/>
<xs:complexType name="shoetype">
  <xs:simpleContent>
    <xs:extension base="xs:integer">
      <xs:attribute name="color" type="xs:string"/>
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>
</xs:schema>

为19-11.xml文档声明xsd混合元素:

<?xml version="1.0" encoding="GBK" ?>
<letter>
  Dear <name>Jack</name>,
  Hello.
  <myname>Tom</myname>
</letter>


<?xml version="1.0" encoding="GBK" ?>
<xs:schema xmlns:xs="">
  <xs:element name="letter" type="lettertype"/>
  <xs:complexType name="lettertype" mixed="true">
    <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="myname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

xsd的元素:是开发者有能力通过未被schena规定的元素来拓展xml文档。通过any元素让开发者在xml文档中增加新的元素,新的元素可以使用xml Schema进行描述

使用any来拓展xml文档:

<?xml version="1.0" encoding="GBK" ?>
<persons>
  <person>
    <id>1</id>
    <name>Tom</name>
    <gender>male</gender>
  </person>
  <person>
    <id>2</id>
    <name>Jack</name>
  </person>
</persons>

<?xml version="1.0" encoding="GBK" ?>
<xs:schema xmlns:xs="">
  <xs:element name="person" type="persontype"/>
    <xs:complexType name="persontype">
      <xs:sequence>
        <xs:element name="id" type="xs:integer"/>
        <xs:element name="name" type="xs:string"/>
        <xs:any minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
</xs:schema>

xsd的元素:

是用来扩展未被Schema规定的元素,而是未被规定的属性:

<?xml version="1.0" encoding="GBK" ?>
<person>
  <id id="1">1</id>
  <name gender="male">Tom</name>
</person>

<?xml version="1.0" encoding="GBK" ?>
<xs:schema xmlns:xs="">
  <xs:element name="person" type="persontype"/>
    <xs:complexType name="persontype">
      <xs:sequence>
        <xs:element name="id" type="xs:integer"/>
        <xs:element name="name" type="xs:string"/>
      </xs:sequence>
      <xs:anyAttribute/>
    </xs:complexType>
</xs:schema>

在xml文档中引用xsd:

<元素 xmlns=

      xsi:noNamespaceSchemaLocation="URI/URL">

URI/URL指定xsd文件

19-4.xml

<?xml version="1.0" encoding="GBK"?>
<!-- 此XML文档描述一个电影库 -->
<library xmlns:xsi="-instance"
        xsi:noNamespaceSchemaLocation="19-14.xsd">
    <电影 id="1">
        <名字>投名状</名字>
        <格式>DVD</格式>
    </电影>
    <电影 id="2">
        <名字>集结号</名字>
        <格式>VCD</格式>
  </电影>
</library>


19-4.xsd
<?xml version="1.0" encoding="GBK" ?>
<xs:schema xmlns:xs="">
  <xs:element name="电影" type="movietype"/>
    <xs:complexType name="movietype">
      <xs:extension base="xs:integer">
        <xs:attribute name="id" type="xs:integer"/>
      </xs:extension>
      <xs:sequence>
        <xs:element name="名字" type="xs:string"/>
        <xs:element name="格式" type="xs:string"/>
      </xs:sequence>
      <xs:anyAttribute/>
    </xs:complexType>
</xs:schema>

阅读(1538) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~