第三节 XML语言0035

Download Report

Transcript 第三节 XML语言0035

XML应用体系结构
Application
SAX
XSL
XML Namespace
DOM
XPath
XML Specification
DOM4J
XLink
XML Schema
(DTD)
XML文档:list.xml
<?xml version="1.0" encoding=" GB2312 " ?>
DTD文档:contact.dtd
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE list SYSTEM “contact.dtd">
<list>
<联系人>
<姓名>张三</姓名>
<ID>001</ID>
<公司>A公司</公司>
<email>[email protected]</email>
<电话>(010)62345678</电话>
<地址>
<省份>北京</省份>
<城市>北京</城市>
<街道>五街1234号</街道>
</地址>
</联系人>
</list>
<!ELEMENT list (联系人)*>
<!ELEMENT 联系人 (姓名,ID,公
司,email,电话,地址)>
<!ELEMENT 地址 (省份,城市,街道)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT ID (#PCDATA)>
<!ELEMENT 公司 (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT 电话 (#PCDATA)>
<!ELEMENT 街道 (#PCDATA)>
<!ELEMENT 城市 (#PCDATA)>
<!ELEMENT 省份 (#PCDATA)>
XSL文档
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xmlns:xsl=http://www.w3.org/TR/WD-xsl …>
<xsl:template><xsl:apply-templates/></xsl:template>
<xsl:template match = "/">
<HTML> <HEAD><TITLE>F公司的客户联系信息</TITLE>
</HEAD><BODY> <xsl:apply-templates select="联系人列表
"/></BODY></HTML>
</xsl:template>
<xsl:template match = "联系人列表">
<xsl:for-each select="联系人">
<UL>
<LI><xsl:value-of select="姓名"/></LI>
<UL>
<LI>用户ID:<xsl:value-of select="ID"/></LI>
<LI>公司: <xsl:value-of select="公司"/></LI>
<LI>EMAIL: <xsl:value-of select=“email"/></LI>
<LI>电话: <xsl:value-of select="电话"/></LI>
</UL>
</UL>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
 将XML文档中的<姓名>
标签转换为HTML中的
<UL>标签;
 将XML文档中的 <ID>、<
公司>、<email>、<电话>
等标签转换为HTML中的
< LI>标签。
第二章 XML语言
第一节
第二节
第三节
第四节
第五节
第六节
第七节
第八节
XML概述
XML语法
DTD
Schema
Namespace
XSL
XML的应用
其他
第四节 schema
schema介绍
schema规范
schema应用
Schema及其发展
Schema起源
DTD存在许多缺陷,如:
 采用非XML的语法规则
 不支持多种数据类型
 扩展性较差等。
W3C成员先后提交5个schema:
 XML-Data
 DCD(Document Content Description for XML)
 SOX(Schema for Object-Oriented XML)、
 DDML(Document Definition Markup Language)
 XML Schema。
XML-Data
1998年由微软等公司发起,首次引入Schema概念。
提供一种在Web上描述和交换结构化和网络化数据的
规范,并描述了XML Schema数据字典。
DCD(Document
Content Description for XML )
1998年由IBM、微软共同发起。
目的是用XML语法规范来定义XML文档结构,
以取代DTD。
SOX(Schema for Object-Oriented XML)
1998年由Veo Systems Inc发起,
提出一种Schema规范,支持对XML文档的结构、
内容和语义进行严格定义。
提供一些诸如基本数据类型和扩展数据类型
机制、内容模型和属性接口继承机制、高效
命名空间机制、嵌入式文档等等。
DDML(Document
Definition Markup Language,又叫
XSchema、XSD)
1999年由xml-dev提交W3C。
DDML只是对DTD的逻辑结构进行了重新定义,使得
Schema文档可以被众多XML工具所编辑。
XML Schema
(http://www.w3.org/XML/Schema)
2001年W3C推荐XML Schema
 取重家之长。
XML Schema分为三部分:
 第一部分 总体介绍(XML Schema Part 0: Primer)
–帮助读者快速理解利用Schema语法创建Schema文档;
 第二部分(XML Schema Part 1: Structure)
–为描述XML1.0文档的结构和内容约束提供了文档,
 第三部分(XML Schema Part 2: Datatypes)
–为Schema及其他XML规范定义了数据类型。
XML Schema特点
一致性
 Schema书写语法和XML文件相同,清晰直观
 DTD结构和XML文件不同,需要单独学习DTD
 Schema。
扩展性
 DTD定义的数据类型有限。
 Schema可以定义多样数据类型。
易用性
 Schema可以沿用XML编辑工具、解析工具、应用工具
–如DOM、SAX。
 DOM、SAX等不支持DTD。
XML Schema特点
规范性
 Schema也提供了一套完整机制以约束XML文档中置标
的使用,比DTD更具有规范性.
互换性
 每个人都可定义适合自己的Schema,可以同其他人交
换彼此的Schema。
 通过映射机制,还可以将不同的Schema进行转换,以
实现更高层次的数据交换。
第四节 schema
Schema介绍
Schema规范
Schema应用
一个XML Schema实例
[1] <?xml version="1.0"? Encoding=“GB2312”>
[2] <xs:schema
[3] xmlns:xs="http://www.w3.org/2001/XMLSchema"
[4] targetNamespace="http://www.book.com.cn"
[5] elementFormDefault="qualified">
[6] attributeformDefault=“unqualified” />
[7]
<xs:element name=“图书“ type=“xs:string”> </xs:element>
[8] </xs:schema>
说明
[1]XML文档声明。
[2]-[6]Schema根元素声明,包含:
[3] Schema命名空间的声明。
[4] 本schema定义元素归属的名称空间
[5] 必须使用前缀或设置默认命名空间显示限定所有元素
[6] 不得限定属性
[7] 正文:定义一个元素,类型为string
[8]结束标记。
一个Schema可以包含多个命名空间
<xs:schema
xmlns:xs=“http://www.w3.org/2001/XMLSchema”
xmlns:dt=“urn:schemas-microsoft-com:datatypes”
xmlns:myNS=“http://www.xml_step_by_step.edu\ns.xml”>
 Xmlns:xs="http://www.w3.org/2001/XMLSchema"
–指明xs命名地址;
 xmlns:dt=“urn:schemas-microsoft-com:datatypes”
–指明dt命名(数据类型)地址;
 xmlns:myNS=“http://www.xxx.xxx\ns.xml”
–指明myNS命名(自定义的元素或属性等)地址。
Schema定义
(1)元素定义
(2)属性定义
(3)类型定义
(4)对元素或属性的限定
(1)元素定义
语法
说明
 name: 可选。元素名称。如果父元素是 schema
元素,则必需。
 type:可选。指定元素类型
内建数据类型(如int、string)
<xs:element
name=“元素名称”
type=“元素类型”
simpleType 、 complexType
 maxOccurs:可选。元素可出现最大次数,大于
等于零,默认为 1。
maxOccurs=“最多出现次数” minOccurs:可选。元素可出现最小次数,大于
等于零,默认为 1。
minOccurs=“最少出现次数”
 default:可选。元素默认值,仅当元素内容是简
default=“默认值”
单类型或 textOnly 时使用。
fixed=“固定值”
 fixed:可选。元素固定值,仅当元素内容是简单
ref=QName>
子元素
<xs:/element>
类型或 textOnly 时使用。
 ref:可选。对另一元素的引用。
ref 属性可包含一个命名空间前缀。
如果父元素是 schema 元素,则不使用该属性。
实例
 Schema文档
<?xml version="1.0" encoding="GB2312"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://myspace.cn"
xmlns="http://myspace.cn" >
<xsd:element name="通信录">
<xsd:complexType>
<xsd:element name="姓名" type="xsd:string"/>
<xsd:element name="地址" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
 XML文档
<?xml version="1.0" encoding="GB2312" ?>
<通信录 xmlns="http://myspace.cn"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xsi:schemaLocation="http://myspace.cn list-2.xsd">
<姓名>张大万</姓名>
<地址>北京市海淀区三里河路1号</地址>
</通信录>
(2)属性定义
语法
说明
<xs:attribute
name=“属性名称”
type=“属性类型”
use=“使用方式”
default=“默认值”
fixed=“固定值”
ref=QName>
子元素
<xs:/attribute>
 name、 type 、default、fixed、ref
含义与element定义相同,但type只能
是简单类型 。
 use:
Optionalo:不是必须的,默认属性
prohibited:禁用
required: 必备
(3)类型定义
三种类型
内嵌数据类型
在《XML Schema Part 2: Datatypes》中定义
– http://www.w3.org/2001/XMLSchema.xsd
简单类型(simpleType)
复杂类型( complexType)
内嵌数据类型
简单类型定义:simpleType
 简单类型
被定义元素只包含文本内容,不包含子元素
 语法
<xs:simpleType
id=“id值”
name=”类型名称“
any attributes>
(annotation?,(restriction|list|union))
<xs:/simpleType>
id=“id值”:可选。规定该元素的
唯一的 ID。
name=”类型名称“:该名称必须是
在 XML 命名空间规范中定义的
无冒号名称 (NCName)。
any attributes :可选。规定带有
non-schema 命名空间的任何其
他属性。
? :符号声明元素可在 simpleType
元素中出现零次或一次。
简单类型定义:simpleType
限制性定义元素:restriction
用于为 XML 元素或者属性定义可接受的值. 例如:
例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>
例1:
<xs:element name="age“ type=“vage>
</xs:element>
<xs:simpleType name=“vage”>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
简单类型定义:simpleType
指定数据类型为简单类型列表列表:list
用空格分离。
Schema文档:
XML文档:
<xs:element name=“作者”
type:=“authlist”/>
<作者>张三 李四 王五</作
者>
<xs:simpleType name=“authlist”>
<xs:list itemType="xs:string“/>
</xs:simpleType>
简单类型定义:simpleType
指定数据类型为多个简单类型集合:union
Schema文档:
XML文档:
<xs:element name=“生日” type=“birthtype”/> <生日>1986-10-10 </生日>
<xs:simpleType name=“birthtype”>
<xs:list memberTypes="xs:string xs:date“/>
</xs:simpleType>
或者
<生日>1986年10月10日 </生日>
复合类型定义:complexType
 复合类型:complexType
指被定义元素中可以包含子元素 /属性及混合内容。
语法:
<xs:complexType
name=“类型名称”
mixed=“是否包含字符数据”>
子元素
</xs:complexType>
mixed:
true:可以包含字符型数据
false:不可以包含字符型数据
子元素限定:
sequence
choice
all
simpleContent
complexContent
复合类型定义:complexType
 sequence限定
子元素按定义顺序出现
方式一:
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name=“email" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
方式二:
<xs:element name="employee“ type=“emtype” />
<xs:complexType name=“emtype”>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name=“email" type="xs:string"/>
</xs:sequence>
</xs:complexType>
复合类型定义:complexType
 choice限定
从所定义的多个子元素中选择一个
<xs:element name=“籍贯“ type=“fromtype” />
<xs:complexType name=“fromtype”>
<xs:choice>
<xs:element name=“省" type="xs:string"/>
<xs:element name=“自治区" type="xs:string"/>
<xs:element name=“直辖市" type="xs:string"/>
</xs:choice>
</xs:complexType>
XML文档:
<籍贯>
<省>河北 </省
</籍贯>
或者
<籍贯>
<自治区>宁夏 </自治区>
</籍贯>
或者
<籍贯>
<直辖市>北京 </直辖市>
</籍贯>
复合类型定义:complexType
 all限定
所有定义的子元素都出现一次,顺序无限制。
<xs:element name=“教室“ type=“courseroom” />
<xs:complexType name=“courseroom”>
<xs:all>
<xs:element name=“生物" type="xs:string"/>
<xs:element name=“物理" type="xs:string"/>
<xs:element name=“化学" type="xs:string"/>
</xs:all>
</xs:complexType>
XML文档:
<教师>
<物理>S101 </物理>
<生物>S103 </生物>
<化学>S108 </化学>
</教师>
复合类型定义:complexType
 复合内容:complexContent
在复合元素类型基础上(继承)进行扩展或限定。
<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
<xs:complexContent>
<xs:extension base="personinfo">
<xs:sequence>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
对personinfo扩展,
增加Address、
city
(4)对元素或属性的限定
1. restriction元素
用于对simpleType、simpleContent、complexContent等元素限定。
语法: <xs:restriction base=“QName”>子元素</ xs:restriction >
minInclusive/maxInclusive
enumeration
<xs:element name="age">
<xs:simpleType>
<xs:simpleType name=“cartype”>
<xs:restriction base="xs:string">
<xs:restriction base="xs:integer">
<xs:enumeration value="Audi"/>
<xs:minInclusive value="0"/>
<xs:enumeration value="Golf"/>
<xs:maxInclusive value="120"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:restriction>
</xs:simpleType>
</xs:simpleType>
</xs:element>
(4)对元素或属性的限定
1. restriction元素
语法: <xs:restriction base=“QName”>子元素</ xs:restriction >
pattern(四字母字串,2数字2字母)
pattern(a-z中零或多个字母)
<xs:simpleType name=“pasword”>
<xs:element name="letter">
<xs:restriction base="xs:string">
<xs:pattern value="[a-z][0-9][a-z][0-9]"/>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:element>
(4)对元素或属性的限定
1. restriction元素
语法: <xs:restriction base=“QName”>子元素</ xs:restriction >
pattern(8字节,大小写字母或数字)
pattern(a-z中零或多个字母)
<xs:simpleType name=“pasword”>
</xs:simpleType>
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:pattern value=“([a-z][A-Z][09])+"/>
<xs:pattern
value="male|female"/>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z09]{8}"/>
</xs:restriction>
(4)对元素或属性的限定
1. restriction元素
语法: <xs:restriction base=“QName”>子元素</ xs:restriction >
Value=:
对空白的限定:whiteSpace
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
preservce: 保留空白
replace:移除所有空白字符(换行、
回车、空格以及制表符)。
collapse :将移除所有空白字符(换
行、回车、空格以及制表符会被替
换为空格,开头和结尾的空格会被
移除,而多个连续的空格会被缩减
为一个单一的空格)。
(4)对元素或属性的限定
1. restriction元素
语法: <xs:restriction base=“QName”>子元素</ xs:restriction >
对长度的限定:指定精确长度
对长度的限定:
<xs:element name="password">
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
(4)对元素或属性的限定
1.restriction元素
(4)对元素或属性的限定
2.extension元素
用于扩展simpleContent、complexcontent元素
语法: <xs:extension base=“QName”>子元素</ xs:extension >
(4)对元素或属性的限定
3.any、anyAttribute元素
指定在XML文档中可以使用未在 schema中 规定的元素、属性。
family.xsd
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:any minOccurs=“0”/>
{person可以有任意元素}
</xs:sequence>
<xs:anyAttribute/>
{person可以有任意属性}
</xs:complexType>
</xs:element>
(4)对元素或属性的限定
3.any、anyAttribute元素
children.xsd
<xs:element name="children">
{自定义元素}
<xs:complexType>
<xs:sequence>
<xs:element name="childname" type="xs:string"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
(4)对元素或属性的限定
3.any、anyAttribute元素
family.xml
<persons xmlns="http://www.microsoft.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:SchemaLocation="http://www.microsoft.com family.xsd
http://www.w3school.com.cn children.xsd">
<person>
<firstname>David</firstname>
<lastname>Smith</lastname>
<children>
<childname>mike</childname>
</children>
</person>
(4)对元素或属性的限定
3.any、anyAttribute元素
myfamily.xsd
…
<xs:attribute name=“gender”>
{自定义属性}
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
…
(4)对元素或属性的限定
3.any、anyAttribute元素
myfamily.xml
<persons xmlns="http://www.microsoft.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:SchemaLocation="http://www.microsoft.com family.xsd
http://www.w3school.com.cn children.xsd">
…
<person gender="female" >
<firstname>David</firstname>
<lastname>Smith</lastname>
<children>
<childname>mike</childname>
</children>
</person>
<person gender="male" >
<firstname>Jack</firstname>
<lastname>Smith</lastname>
</person>
(4)对元素或属性的限定
 4.group元素分组
<group
name=”元素分组名称“
ref=“引用的元素分组名称”
maxOccurs =“最大次数” minOccurs=“最小次数” >
子元素
</group>
(name 和 ref 属性不能同时出现 )
<xs:group name="custGroup">
<xs:sequence>
<xs:element name="customer" type="xs:string"/>
<xs:element name="orderdetails" type="xs:string"/>
<xs:element name="billto" type="xs:string"/>
<xs:element name="shipto" type="xs:string"/>
</xs:sequence>
</xs:group>
<xs:element name="order" type="ordertype"/>
<xs:complexType name="ordertype">
<xs:group ref="custGroup"/>
<xs:attribute name="status" type="xs:string"/>
</xs:complexType>
(4)对元素或属性的限定
 4.attributeGroup属性分组
<attributeGroup
name=”属性分组名称“
ref=“引用的属性分组名称” any attributes >
子元素
</attributeGroup>
(name 和 ref 属性不能同时出现 )
<xs:attributeGroup name="personattr">
<xs:attribute name="attr1" type="string"/>
<xs:attribute name="attr2" type="integer"/>
</xs:attributeGroup>
<xs:complexType name="person">
<xs:attributeGroup ref="personattr"/>
</xs:complexType>
第四节 schema
Schema介绍
Schema规范
Schema应用
Schema的应用
由于XML Schema的种种优点,国际上一些知
名企业和组织都提供对XML Schema的支持。
微软从其浏览器软件IE 5.0开始支持Schema。
微软Schema资源库
http://www.biztalk.org/
BizTalk是微软发布的schema库
各商家定义自己的schema,提交到bizTalk.org
进行注册;
每个Schema必须遵守编写规则,而且要有一些规
定好的必要元素和属性。
用户可以注册和查找schema,共享。
xml.org的Schema资源库
http://www.xml.org/
xml.org是OASIS发布的Schema资源。
通过xml.org,OASIS进行了XML应用信息的搜集、
管理和发布,包括数据字典、Schema、命名空间和
DTD。
企业机构和组织也可将自己制定的Schema提交到
xml.org。
企业用户或开发者在xml.org查找相关Schema,在
自己的系统中应用。
第二章 XML语言
第一节
第二节
第三节
第四节
第五节
第六节
第七节
第八节
XML概述
XML语法
DTD
Schema
Namespace
XSL
XML的应用
其他
第五节 Namespace
命名空间
命名空间是一种名称的集合,通过一种 URI
来引用标识,作为元素类型和属性的名称,
它应用于 XML文档。
命名空间规范
Namespaces in XML 1.0 (Third Editoion)
http://www.w3.org/TR/REC-xml-names
XML命名空间
声明命名空间
命名空间的使用
声明命名空间
命名空间规范
XML 使用 URI 作标识符指定命名空间
 使用 URI 的目的是保持域名的唯一性,XML 名域只
将它作为字符串处理。
 URI 不必是有效的,它可以不指向任何真实位置,
即使计算机没有与 Internet 连接,也可以处理
XML文档。
 不需要建立专门的机构来接受特定名称的申请、审
核和维护,使用者也免去了申报、注册之类的繁杂
事务。
名域是大小写敏感的
 Student 和 student 代表不同的名域。
声明命名空间
命名空间的声明格式
<元素 xmlns:前缀=“URI”>
XML 命名空间由两部分构成:
 URI(Uniform Resource Identifier),它是区分名域的依据。
 前缀(prefix),用以标识元素来自哪个名域,避免了直接
使用冗长的 URI 或网址做元素、属性的标识,给名域的使
用带来极大的便利。
命名空间引用方式:
<前缀:元素>
在Schema文件中,命名空间是由xmlns属性来
指定:
<Schema name="mySchema"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes“
xmlns:myNS=“http://www.url.edu\ns.xml”
>
 以前面的“联系人列表”为例子,假定需要知道每个联系人的直
接上级,DTD中要为“联系人”元素增加一个子元素“直接上级”。
修改后的DTD文件源码如下: ( 联系人列表.dtd )
<!ELEMENT
<!ELEMENT
级)>
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
联系人列表 (联系人)*>
联系人 (姓名,ID,公司,EMAIL,电话,地址,直接上
地址 (街道,城市,省份)>
姓名 (#PCDATA)>
ID (#PCDATA)>
公司 (#PCDATA)>
EMAIL (#PCDATA)>
电话 (#PCDATA)>
直接上级 ANY>
街道 (#PCDATA)>
城市 (#PCDATA)>
省份 (#PCDATA)>
“直接上级”的内容来自于另一个DTD声
明—(企业经理.dtd):
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
企业经理 (姓名,电话)>
姓名 (#PCDATA)>
电话 (秘书电话,手机)>
秘书电话 (#PCDATA)>
手机 (#PCDATA)>
没有命名空间的XML
<联系人列表 xmlns="联系人列表.dtd" >
<联系人>
<姓名>张三</姓名>
<ID>001</ID>
<公司>A公司</公司>
<EMAIL>[email protected]</EMAIL>
<电话>(010)62345678</电话>
<地址>
<街道>五街1234号</街道>
<城市>北京市</城市>
<省份>北京</省份>
</地址>
<直接上级>
<姓名>王五</姓名>
<电话>
<秘书电话>(010)62345678</秘书电话>
<手机>13601234567</手机>
</电话>
</直接上级>
</联系人>
</联系人列表>
冲突
使用命名空间的XML
<联系人:联系人列表 xmlns:联系人 ="联系人列表.dtd" xmlns:企业经理
="企业经理.dtd">
<联系人:联系人>
<联系人:姓名>张三</联系人:姓名>
<联系人:ID>001</联系人:ID>
<联系人:公司>A公司</联系人:公司>
<联系人:EMAIL>[email protected]</联系人:EMAIL>
<联系人:电话>(010)62345678</联系人:电话>
<联系人:地址>
<联系人:街道>五街1234号</联系人:街道>
<联系人:城市>北京市</联系人:城市>
<联系人:省份>北京</联系人:省份>
</联系人:地址>
<联系人:直接上级>
<企业经理:姓名>王五</企业经理:姓名>
<企业经理:电话>
<企业经理:秘书电话>(010)62345678</企业经理:秘书电话>
<企业经理:手机>13601234567</企业经理:手机>
</企业经理:电话>
</联系人:直接上级>
</联系人:联系人>
</联系人:联系人列表>
XML文件中元素的合法名称的形式是:
前缀部分:本地部分
“前缀部分”和“本地部分”都要求是一个合法
XML名称。
前缀部分必须是一个已经经过声明的命名空间前缀,
语法分析器将把它与命名空间声明中的URI引用相
联系;
本地部分则是在DTD或Schema中定义的元素和属性
名。
例如:
 企业经理:姓名
 dc:title
命名空间的声明方式
直接方式
 <企业经理:姓名>
 <dc:title>
缺省方式
 缺省声明的命名空间就是作用域内的缺省命名空间,因此,
在这个作用域内使用该命名空间的元素、属性的合法名称无
须再写前缀部分。
 例如:
<books xmlns="http://purl.org/dc/elements/1.1/”>
<title>呐喊</title>
</books>
XML命名空间
声明命名空间
命名空间的使用
命名空间作用于元素
要求
用于起始元素标记、结束元素标记和空元素标记。
前缀部分必须是一个已经声明过的命名空间前缀
声明的位置
既可以在使用该前缀的起始元素的标记处
也可以是在父元素标记处
作用域
声明所在元素范围内,包括所有子元素;
可以被新声明所覆盖。
<联系人:联系人列表 xmlns:联系人 ="联系人列表.dtd">
<联系人:联系人>
<联系人:姓名>张三</联系人:姓名>
作用全局
<联系人:ID>001</联系人:ID>
<联系人:公司>A公司</联系人:公司>
<联系人:EMAIL>[email protected]</联系人:EMAIL>
<联系人:电话>(010)62345678</联系人:电话>
<联系人:地址>
<联系人:街道>五街1234号</联系人:街道>
作用局部
<联系人:城市>北京市</联系人:城市>
<联系人:省份>北京</联系人:省份>
</联系人:地址>
<联系人:直接上级 xmlns:企业经理 =“企业经理.dtd”>
<企业经理:姓名>王五</企业经理:姓名>
<企业经理:电话>
<企业经理:秘书电话>62345678</企业经理:秘书电话>
<企业经理:手机>13601234567</企业经理:手机>
</企业经理:电话>
</联系人:直接上级>
</联系人:联系人>
</联系人:联系人列表>
<联系人列表 xmlns="联系人列表.dtd"
缺省命名空间
xmlns:企业经理 ="企业经理.dtd">
<联系人>
<姓名>张三</姓名>
<ID>001</ID>
<公司>A公司</公司>
<EMAIL>[email protected]</EMAIL>
<电话>(010)62345678</电话>
<地址>
<街道>五街1234号</街道>
<城市>北京市</城市>
<省份>北京</省份>
</地址>
<直接上级>
<企业经理:姓名>王五</企业经理:姓名>
<企业经理:电话>
<企业经理:秘书电话>(010)62345678</企业经理:秘书电话>
<企业经理:手机>13601234567</企业经理:手机>
</企业经理:电话>
</直接上级>
</联系人>
</联系人列表>
<联系人列表 xmlns="联系人列表.dtd">
<联系人>
<姓名>张三</姓名>
<ID>001</ID>
<公司>A公司</公司>
命名空间声明中URI
<EMAIL>[email protected]</EMAIL>
为空串时,元素不
<电话>(010)62345678</电话>
属于任何命名空间。
<地址>
<街道>五街1234号</街道>
这里,两个“姓名”
<城市>北京市</城市>
元素不一样。
<省份>北京</省份>
</地址>
<直接上级>
<姓名 xmlns = "">王五</姓名>
<电话 xmlns = "">
<秘书电话 xmlns = "">(010)62345678</秘书电话>
<手机 xmlns = "">13601234567</手机>
</电话>
</直接上级>
</联系人>
</联系人列表>
命名空间作用于属性
命名空间也可用于属性
如下:
<联系人 xmlns:企业经理 = “http://www.xml.net.cn/联系人
列表.dtd”>
<姓名 企业经理:文种 = “中文”>李华</姓名>
<电话 企业经理:城市 = “北京”>62348765</电话>
</联系人>
第二章 XML语言
第一节
第二节
第三节
第四节
第五节
第六节
第七节
第八节
XML概述
XML语法
DTD
Schema
Namespace
XSL
XML的应用
其他
第六节 XSL
 样式单(Style Sheet)
描述结构文档表现方式,既可以描述文档如何在屏幕上显示,
也可以描述它们的打印效果,甚至声音效果。
 XML数据与样式单被定义成不同文件
XML格式文档不像HTML那样复杂、繁乱,XML编写者可集中精
力于数据本身,而不受显示方式的影响。
相同的数据,因为定义不同样式单可以使呈现出不同的显示
外观。
 W3C推荐两种样式单标准
层叠样式单CSS(Cascading Style Sheets)
可扩展样式单语言XSL(eXtensible Stylesheet Language)。
第六节 XSL
CSS
可以定义HTML或XML文档中元素的显示效果,
包括元素的位置、颜色、背景、边空、字体、
排版格式等等。
HTML应用CSS的例子
<HTML>
<HEAD> <STYLE>
H1{color:red; }
myclass{color:green}
H2.myclass{color:blue} #myid{color:brown}</STYLE>
</HEAD>
<BODY>
<H1>这是红色的一号标题。</H1>
<P class="myclass">"myclass"类中的正文是绿色的。</P>
<H2 class="myclass">但"myclass"类中的二号标题是蓝色的。</H2>
<P class="myclass" id="myid">以"myid"为标识的正文则是棕色的。</P>
</BODY>
</HTML>
这是红色的一号标题。
"myclass"类中的正文是绿色的。
但"myclass"类中的二号标题是蓝色的。
以"myid"为标识的正文则是棕色的。
XML文档使用CSS
student.xml:
<?xml version="1.0" encoding="gb2312" ?>
<?xml-stylesheet type="text/css" href="mystyle.css"?>
<roster>
<student>
<name>李华</name>
<origin>河北</origin>
<age>15</age>
<telephone>62875555</telephone>
</student>
<student>
<name>张三</name>
<origin>北京</origin>
<age>14</age>
<telephone>82873425</telephone>
</student>
</roster>
XML文档使用CSS
mystyle.css:
roster,student
{
font-size:15pt; font-weight:bold;
color:blue; display:block;
margin-bottom:5pt;
}
origin,age,telephone
{
font-weight:bold; font-size:12pt;
display:block; margin-left:20pt;
}
name
{
font-weight:bold; font-size:14pt;
display:block; color:red;
margin-top:5pt; margin-left:8pt;
}
第六节 XSL
XSL(eXtensible Stylesheet Languge)
可扩展样式单语言,由W3C制定。
XSL通过XML进行定义,遵守XML语法规则,
是XML的一种具体应用,XSL文档可以被XML解
释器解析。
XSL由两大部分组成
第一部分
 根据XML文档构造源树
 根据给定的XSL将这个源树转换为可以显示的结果树。
 W3C推荐标准是:XSLT(XSL Transformations)。
第二部分
 格式化:按照格式对象FO(Formatted Object)解释
结果树,产生一个可以在屏幕上、纸上、语音设备或
其它媒体中输出的结果。
 W3C还未能出台一个得到多方认可的FO。
XSLT基本思想
通过定义转换模板,将XML源文档转换为带
样式信息的可浏览文档。
为了支持对XML文档节点元素的操作,XSLT
包含一种可扩展路径语言:XPath
XPath
功用
结点定位
XML文档中的元素结点、属性结点、文本
结点、命名空间结点、处理指令结点等
简单操作
XPath提供一些函数,支持数字计算、布尔
计算、字符串处理等。
XPath:路径表达式
指定结点路径获得相关信息
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
XPath:谓词
对结点进行过滤操作
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
XPath:定位阶
路径表达式: /step/step……
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
XPath测试
路径表达式:
<?xml version="1.0" encoding="ISO-8859-1"?>
set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.selectNodes("/bookstore/book")
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
测试结果:
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
XPath测试
路径表达式:
<?xml version="1.0" encoding="ISO-8859-1"?>
set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.selectNodes("/bookstore/book[1]")
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
测试结果:
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
XPath测试
路径表达式:
<?xml version="1.0" encoding="ISO-8859-1"?>
set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.selectNodes(“/bookstore/book/price/text()")
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
测试结果:
29.99
39.95
XPath测试
路径表达式:
<?xml version="1.0" encoding="ISO-8859-1"?>
set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.selectNodes("//title[@lang='eng']")
<bookstore>
<book>
<title lang=“fra">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
测试结果:
<title lang="eng">Learning
XML</title>
XSLT应用场景
XML文档
XSLT
转换器
XSLT文档
HTML文档
XSLT结构
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" >
<xsl:template>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match=“XPath表达式”>
模板内容
</xsl:template>
……
</xsl:stylesheet》
XSLT模板
模板定义
<xsl:template match=“XPath表达式”
name=“模板名称”>
模板内容
</xsl:template>
模板实例
<xsl:template match=“//book[1]”>
<table border=“1”>
<tr>
<td> <B>书名</B> </td>
<td> <B>价格</B> </td>
</tr>
<tr>
<td><xsl:value-of select=“title"/></td>
<td><xsl:value-of select=“price"/></td>
</tr>
</table>
</xsl:template>
XSLT模板引用(一)
<xsl:apply-templates>应用形式一
<xsl:template match=“/”>
<xsl:apply-templates />
</xsl:template>
表示对当前节点(根节点)的所有子节点应用模板。
<xsl:apply-templates>应用形式二
<xsl:template match=“student”>
<xsl:apply-templates select=“Name” />
</xsl:template>
表示模板只应用于“student”节点下的“Name”子节点。
XSLT模板引用(一)
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" >
<xsl:template match=“/”>
<xsl:apply-templates select=“book[1]”/>
</xsl:template>
<xsl:template match=“book[1]”>
<TABLE BORDER=“1”>
<THEAD>
<TD> <B>书名</B> </TD>
<TD> <B>价格</B> </TD>
</THEAD>
<TR>
<TD><xsl:value-of select=“title"/></TD>
<TD><xsl:value-of select=“price"/></TD>
</TR>
</TABLE>
</xsl:template>
</xsl:stylesheet》
XSLT模板引用(二)
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" >
<xsl:template match=“/”>
<xsl:call-templates name=“list”/>
</xsl:template>
<xsl:template match=“/” name=“list”>
<TABLE BORDER=“1”>
<THEAD>
<TD> <B>书名</B> </TD>
<TD> <B>价格</B> </TD>
</THEAD>
<TR>
<TD><xsl:value-of select=“/bookstore/book[1]/title"/></TD>
<TD><xsl:value-of select=“/bookstore/book[1]/ price"/></TD>
</TR>
</TABLE>
</xsl:template>
</xsl:stylesheet》
XSLT操作指令
 xsl:value-of
功能:提取指定结点的值
语法:<xsl:value-of select=“XPath表达式”/>
实例:
 <xsl:value-of select=“//title”/>
输出title元素的值。
 <xsl:value-of select=“//title/@lang”/>
输出title元素的属性lang的值。
XSLT操作指令
xsl:for-each
功能:多结点的循环处理指令
语法:
<xsl:for-each select=“XPath表达式”
order-by=“子结点名称” >
子元素
</xsl:for-each>
实例:
<xsl:for-each select=“book" order-by=“title">
<TR>
<TD><xsl:value-of select=“title"/></TD>
<TD><xsl:value-of select=“price"/></TD>
</TR>
</xsl:for-each>
XSLT操作指令
 xsl:if
功能:条件判断
语法:
<xsl:if test=“条件表达式”>
子元素
</xsl:if>
实例:
<xsl:template match=“book”>
<xsl:for-each select=“title”>
<xsl:if test=“@lang=‘eng’”>
本书为英文书,名称为<xsl:value-of select=“title"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
XSLT操作指令
xsl:choose
功能:多条件判断
语法:
<xsl:choose>
<xsl:when test=“条件表达式1”
……
</xsl:when>
<xsl:when test=“条件表达式2”
……
</xsl:when>
……
<xsl:otherwise”
……
</xsl:otherwise>
</xsl:choose>
XSLT应用实例
国家科学图书馆SRU检索平台
(SRU, Search and Retrieval via URL)
XSL
Stylesheet
HTML
浏览器
XML
Response
URL
Request
NSL
联合目录库
NSL
SRU Server
NSL
学位论文库
国防
科技信息库
XSLT应用实例
国家科学图书馆SRU检索平台
(SRU, Search and Retrieval via URL)
检索URL
 http://sru.csdl.ac.cn/SRW/services/DEIS?query=dc.title+%3D+
%22system%22&version=1.1&operation=searchRetrieve&rec
ordSchema=info%3Asrw%2Fschema%2F1%2Fdc-v1.1&maxi
mumRecords=10&startRecord=1&resultSetTTL=300&recordP
acking=xml&recordXPath=&sortKeys=&stylesheet=/SRW/db
ase/DEIS/searchRetrieveResponse.xsl
检索结果
 没有指定XSL的XML
– DEMO
 指定了XSL的XML—客户端转换
– DEMO
XSLT转换实现
客户端转换
以上国科图SRU例子
 服务器端转换
在服务前端完成:XML + XSL -> HTML 转换,然后再将
HTML文件送往客户端进行浏览。
优点是兼容任何浏览器,缺点是要管理转换过程。
查看
浏览器
HTML
服务器
XML+XSL
第七节 XML的应用
Web标准描述成为XML主要应用形式
面向网页的应用: XHTML
面向科技领域的应用:MathML
面向图形图象的应用:SVG
面向多媒体的应用:SMIL
面向无线网的应用:HDML和WML
面向电子商务的应用
面向电子政务的应用
面向e-publishing的应用
面向e-learning的应用
面向Web服务集成的应用
面向网页的应用
XHTML
XHTML是将HTML改用XML来重新定义,
是HTML到XML的过渡版本。
XHTML必须遵守XML的规范,严格执行,
不再像过去那么随便。
面向科技领域的应用:MathML
MathML的目标是用XML描述数学公式
W3C于1998年发布了MathML的1.0版
本,现在MathML2.0草案也在讨论之
中。
例如,要描述下列公式
XML描述如下
<mrow>
<mi>x</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mrow>
<mo>-</mo>
<mi>b</mi>
</mrow>
<mo>&PlusMinus;</mo>
<msqrt>
<mrow>
<msup>
<mi>b</mi>
<mn>2</mn>
</msup>
<mo>-</mo>
<mrow>
<mn>4</mn>
<mo>&InvisibleTimes;</mo>
<mi>a</mi>
<mo>&InvisibleTimes;</mo>
<mi>c</mi>
</mrow>
</mrow>
</msqrt>
</mrow>
<mrow>
<mn>2</mn>
<mo>&InvisibleTimes;</mo>
<mi>a</mi>
</mrow>
</mfrac>
</mrow>
面向图形图象的应用
SVG
(Scalable Vector Graphics)
W3C于1999年发布了第一个讨论草案,
后几经修订发布了最终草案。
SVG是一种基于XML的用来描述二维矢
量图形和矢量/点阵混合图形的置标语
言,其全称是可扩展矢量图形规范。
面向多媒体的应用
SMIL:同步多媒体合成语言,即Synchronized
Multimedia Integration Language。
描述多媒体对象,以便将视频、音频、图象、文字
在时间和空间轴上集成为一个同步多媒体演示文档。
SMIL包含了以下三方面的内容:
 描述演示文档的屏幕布局
 描述演示文档的时间行为
 描述媒体对象间的相关链接
面向无线网的应用
HDML:Handheld Device Markup Language
Specification
 为小显示屏的手持设备定义类似超文本内容和应用
的语言
 HDML的重点是内容的表现与布局,为手机、呼机、
无线PDA等手持设备提供服务。
WML :Wireless Markup Language
 WML是WAP论坛制定的一个基于XML的移动通信设备
的置标语言,它定义了在较窄的显示设备上进行
Web浏览的内容及用户界面,包括使用手机上网。
面向电子商务的应用
 基于XML的电子商务标准分为三类:
体系结构相关的标准:
 ebCPP( ebXML Collaborative Partner Profile Agreement )
 ebMS( ebXML Messaging Service Specification )
 ebRIM( ebXML Registry Information Model )
 ebRS( ebXML Registry Services Specification)
供应链各环节功能相关标准:
 xCBL(XML Common Business Library):电子商务交换标准
 tpaML(Trading partner agreement Markup Language ):电子合同
 cXML(Commerce XML ):在线交换数据格式
 WIDL (Web Interface Definition Language):定义Web接口
面向电子政务的应用
 系统架构标准
FEA(Federal Enterprise Architecture):美国联邦政府组织架构
e-GIF(e-Government Interoperability Framework):英国政府电
子政务互操作框架
SAGA(Standards and Architectures for E-Government
Applications):德国政府电子政务应用标准与架构
 文档格式标准
ODF(Open Document Format)ISO/IEC 26300:2006 :国际标准
UOF(Unified Office Document format):中文办公文档格式
OOXML(Office Open XML):微软办公文档格式
面向e-publishing的应用
国际数字出版论坛IDPF三个开放标准:
Open Publication Structure (OPS)
 前身是1999年颁布的OEB( Open eBook
Structure Specification 1.0):统一文档数据格式
标准。
Open Packaging Format (OPF)
 统一封装格式
Open Container Format (OCF)
 开放容器格式
面向e-learning的应用
 ADL(Advanced Distributed Learning Initiative )
SCORM(Sharable Content Object Reference Model):学习对象定义、
访问、重用、互操作标准。
Sakai
 IMS (IMS Global Learning Consortium )
IMS Content Packaging: 内容封装规范
IMS Simple Sequencing:内容序列规范
 IEEE
Data Model for Content to Learning Management System Communication:
数据模型
ECMAScript application programming interface for content to runtime
services communication:界面交互规范
LOM(Learning Object Metadata):学习对象元数据规范
Markup Language (XML) Schema Definition Language Binding for
Learning Object Metadata:学习对象schema
面向Web服务集成的应用
应用举例
服务描述标准
 WSDL(Web Services Description Language )
资源描述框架
 RDF(Resource Description Framework )
概念描述语言
 OWL(Web Ontology Language )
消息交换标准
 SOAP(Simple Object Access Protocol)
内容聚合标准
 RSS(Really Simple Syndication)
第八节 其他
XML编程之:DOM4J
the starting guide
第八节 其他
JSON (JavaScript Object Notation)
JSON 是一种轻量级的计算机数据交换语言。
优点:
 JSON数据格式比较简单, 易于读写, 格式都是压缩的, 占用
带宽小;
 解析性能高;
 支持多种语言, 包括Actionscript、ColdFusion、Java、
Javascrīpt、Perl、PHP、Python、Ruby等;
 代码开发量小,可维护性强。
第八节 其他
JSON 与XML比较
<?xml version=”1.0” encoding=”UTF-8”?>
<Image>
<Width>800</Width>
<Height>600</Height>
<Title>View from 15th Floor</Title>
<Thumbnail>
<Url>http://scd.mm-b1.yimg.com
/image/481989943</Url>
<Height>125</Height>
<Width>100</Width>
</ Thumbnail>
<IDs>
<ID>116</ID>
<ID 943<ID>
<ID>234</ID>
<ID>38793</ID>
</IDs>
</Image>
{
"Image":
{
"Width":800,
"Height":600,
"Title": "View from 15th Floor",
"Thumbnail":
{
"Url":"http://scd.mm-b1.yimg.com
/image/481989943",
"Height": 125,
"Width": "100"
},
"IDs": [ 116, 943, 234, 38793 ]
}
}
第八节 其他
JSON 编程举例
Demo1
静态页面
Demo2
AJAX+JSON
第八节 其他
发展前景
随着Web2.0发展,JSON将有越来越多
的应用,如:
Rich UI
– AJAX+JSON成为新的用户界面开发模式
Mashup
– Google、Amazon、Flickr等都提供JSON API
作业
三选一:
1.选择一个XML编辑工具,用它编辑生成以下课表信息文档:
(1)定义一个DTD或Schema;
(2)根据上边定义的DTD或Schema ,创建一个XML文档;
(3)根据自行设计的显示风格编写一个XSL;
(4)最后,写出实验报告,要包含:
a)所选择xml工具介绍;
b)DTD(XSD)、XML、XSL三个文件内容及显示效果截图;
c)总结实验中遇到的问题,并进行评价。
2.利用DOM4J 等工具做XML编程实验,测试XML文档读取/写入、或转
换(xml->html)等功能。提交实验报告,包括编程平台介绍、
环境配置过程、程序代码、相关的XML/XSL/HTML等文件,对实验
进行评价、分析。
3.在Tomcat等环境下,做一个Web应用试验,实现后台JSON包数据封
装、浏览器JSON数据解析以及用户界面控制等功能。提交实验报
告,包括应用环境配置过程、JSON数据结构、程序代码html/jsp
等文件,对实验进行评价、分析。
选择2或3的同学,可参照以下资料:
http://crossdomain.las.ac.cn/licw/wis/xml.zip
推荐参考书
《XML实用教程》
范立锋主编
人民邮电出版社,北京,2009
ISBN:978-7-115-20527-8
198页
24.00元
本书内容主要包括:XML概述、XML文件规则、XML
数据底层结构、XML Schema模式、使用CSS格式化
显示XML文件、使用XSL格式化显示XML文件、XML数
据源对象等.
同时还介绍两个XML解析器:DOM、SAX。