1 / 51

XML 语言 及其应用

XML 语言 及其应用. 马自卫 北京邮电大学图书馆 信息处理和数字图书馆研究所 2002 年 11 月 8 日. 主要内容. XML 概述 什么是 XML XML 应用实例 XML 和 HTML 比较 XML 语法 XML 文档的逻辑结构 XML 整体逻辑结构总结 XML 文档的物理结构 DTD 的建立和使用 1) DTD 概述 2) 元素定义 3) 定义元素属性 4. Scheme 的建立与应用. XML 概述. 什么是 XML. 什么是 Html ( 例 1 - 1 ) 什么是 Xml ( 例 1 - 2 )

johnda
Télécharger la présentation

XML 语言 及其应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML语言及其应用 马自卫 北京邮电大学图书馆 信息处理和数字图书馆研究所 2002年11月8日

  2. 主要内容 • XML概述 • 什么是XML • XML应用实例 • XML和HTML比较 • XML语法 • XML文档的逻辑结构 • XML整体逻辑结构总结 • XML文档的物理结构 • DTD的建立和使用 1) DTD概述 2) 元素定义 3) 定义元素属性 4. Scheme的建立与应用

  3. XML概述

  4. 什么是XML • 什么是Html(例1-1) • 什么是Xml(例1-2) • 需要DTD作为置标的语法 • 需要样式单来显示 • DTD的描述(例1-3) 2)XML应用实例

  5. 返回 例1-1 <UL> <LI>张三</LI> <UL> <LI>用户ID:001</LI> <LI>公司:A公司</LI> <LI>EMAIL:zhang@aaa.com</LI> <LI>电话:(010)62345678</LI> <II>地址:五街1234号</LI> <U>城市:北京市</LI> <LI>省份:北京</LI> </Ul> <LI>李四</LI> <UL> <U>用户ID:002</LI> <LI>公司:B公司</LI> <LI>EMAIL:li@bbb.org</LI> <LI>电话:(021)87654321</LI> <LI>地址:南京路9876号</LI> <LI>城市:上海市</LI> <LI>省份:上海<LI> </UL> </UL>

  6. 返回 例1-2 <联系人列表> <联系人> <姓名>张三</姓名> <ID>001</ID> <公司>A公司</公司> <EMAIL>zhang@aaa.com</EMAIL> <电话>(010)62345678</电话> <地址> <街道>五街1234号</街道> <城市>北京市</城市> <省份>北京</省份> </地址> </联系人> <联系人> <姓名>李四</姓名> <ID>002</ID> <公司>B公司</公司> <EMAII>1i@bbb.org</EMAII> <电话>(021)87654321</电话> <地址> <街道>南京路9876号</街道> <城市>上海市</城市> <省份>上海</省份> </地址> </联系人> </联系人列表>

  7. 返回 例1-3 <!ELEMENT 联系人列表(联系人)*> <!ELEMENT 联系人(姓名,ID,公司,EMAIL,电话,地址)> <!ELEMENT 地址(街道,城市,省份)> <!ELEMENT 姓名(#PCDATA)> <!ELEMENT ID(#PCDATA)> <!ELEMENT 公司(#PCDATA)> <!ELEMENT EMAIL(#PCDATA)> <!ELEMENT 电话(#PCDATA)> <!ELEMENT 街道(#PCDATA)> <!ELEMENT 城市(#PCDATA)> <!ELEMENT 省份(#PCDATA)>

  8. XML应用实例 • 为置标语言FCLML公司的客户列表置表语言制定的,文档类型定义DTD,其程序为fclml.dtd(例1-4) • 客户联系信息的XML文档Client.xml (例1-5) • 为client.xml制定一个样式Mystyle.xsl (例1-6) • Html格式及显示(例1-7,例1-8) 3)XML和Html比较

  9. 返回 例1-4 Fclml.dtd <? xml version=“1.0” encoding=“GB2312”? > <!ELEMENT 联系人列表(联系人)*> <!ELEMENT 联系人(姓名,ID,公司,EMAIL,电话,地址)> <!ELEMENT 地址(街道,城市,省份)> <!ELEMENT 姓名(#PCDATA)> <!ELEMENT ID(#PCDATA)> <!ELEMENT 公司(#PCDATA)> <!ELEMENT EMAIL(#PCDATA)> <!ELEMENT 电话(#PCDATA)> <!ELEMENT 街道(#PCDATA)> <!ELEMENT 城市(#PCDATA)> <!ELEMENT 省份(#PCDATA)>

  10. 返回 例1-5 Clent.xml < ? xml version=“1.0”encoding=”GB2312” standalone=”no”?> <!DOCTYPE 联系人列表 SYSTEM”fclml.dtd”> <?xml—stylesheet type=”text/xsl” href=“mystyle.xsl”?> <联系人列表> <联系人> <姓名>张三</姓名> <ID>001</ID> <公司>A公司</公司> <EMAIL>zhang@aaa.com</EMAIL> <电话>(010)62345678</电话> <地址> <街道>五街1234号</街道> <城市>北京市</城市> <省份>北京</省份> </地址> </联系人> <联系人> <姓名>李四</姓名> <ID>002</ID> <公司>B公司</公司> <EMAII>1i@bbb.org</EMAII> <电话>(021)87654321</电话> <地址> <街道>南京路9876号</街道> <城市>上海市</城市> <省份>上海</省份> </地址> </联系人> </联系人列表>

  11. 返回 例1-6 MyStyle.xsl <?xml version="1.0"encOding="GB2312"?> <xsl:stylesheet xmlns:xsl=”http://www.w3.org/TR/WD-xsl" xmlHs="http://www.w3.org/TR/REC—html40" result—ns:=""> <xst:template><xsI:apply—templates/></xsl:template> <xsl:template match="/"> <HTML> <HEAD> <TITLE>F公司的客户联系信息</TITlE> </HEAD> <BODY> <xsl:apply—templates select="联系人列表"/> </BODY> </HTMI> </xsl:template>

  12. 例1-6 <xsl:stemplat 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> <LI>街道:<xsl:value—of select=“地址/街道"/></LI> <LI>城市:<xsl:value—of select=“地址/城市"/></LI> <LI>省份:<xsl:value—of select=“地址/省份"/></LI> </UL> </UL> </xsl:for-each> </xsl:template> </xsl:stylesheet>

  13. 返回 例1-7 <HTML> <HEAD> <TITLE>F公司的客户联系信息</TITLE> </HEAD> <BODY> <UL> <LI>张三</LI> <UI> <LI>用户ID:001</LI> <LI>公司:A公司</LI> <LI>EMAIL:zhang@aaa.com</LI> <LI>电话:(010)62345678</LI> <LI>地址:五街1234号</LI> <LI>城市:北京市</LI> <LI>省份:北京</LI> </UL> <LI>李四</LI> <UL> <LI>ID:002</LI> <LI>公司:B公司</LI> <LI>EMAIL:1i@bbb.or8</LI> <LI>电话:(021)87654321</LI> <LI>地址:南京路9876号</LI> <LI>城市:上海市</LI> <LI>省份:上海</LI> </UL> </UL> </BODY> </HTML>

  14. 返回 例1-8 • 张三 • 用户ID:001 • 公司:A公司 • EMAIL:zhang@aaa.com • 电话:(010)62345678 • 地址:五街1234号 • 城市:北京市 • 省份:北京 • 李四 • ID:002 • 公司:B公司 • EMAIL:1i@bbb.or8 • 电话:(021)87654321 • 地址:南京路9876号 • 城市:上海市 • 省份:上海

  15. XML和Html比较

  16. GML(1969) 通用置标语言 SGML(1985) 标准通用置标语言 超文本置标语言 HTML(1993) XML(1998) 可扩展置标语言 XHTML SVG SMIL HDML … OEB 可缩放矢量图形语言 同步多媒体综合语言 手持设备置标语言 可扩展超文本置标语言 开放电子结构规范 XML和Html比较 置标语言家谱表

  17. XML语法

  18. XML文档的逻辑结构 • 例2-1 • 一个XML文档最基本构成 • 上例出现的逻辑要素 • 元素、根元素 • 数据块CDATA节作用 • 注释 • 处理指令PI 2)XML整体逻辑结构总结

  19. 例2-1 [1]<?xmlversion=“1.0”encoding=”GB2312“standalone=”no“?> [2]<?xml—stylesheet type=“text/xsl”href=”mystyle.xsl”?> [3]<专有名词列表> [41 <专有名词> [5] <名词>XML</名词> [6] <解释>XMI。是一种可扩展的元置标语言,它可用以规定新的置标规则,并根据 这个规则组织数据</解释> [7] <示例> [8] <!—一个XML的例子—> [9] <![CDATA[ [10] <联系人> [11] <姓名>张三</姓名> [12] <EMAIL>zhang@aaa.com</EMAIL> [13] </联系人> t14] ]]> [15] </示例> [16] </专有名词> [17]</专有名词列表>

  20. 返回 例2-1 一个XMl文档最基本的构成是: ●XMl声明 ●处理指令(可选) ●XML元素 例2—1中出现的逻辑要素有: ●[1]是XML声明 ●[2]是处理指令 ●[3]一[17]是文档中的各个元素 ●[8]是注释 ●[9]~[14]是CDATA节 ●在[5]行的“<名词>XML</名词>”中,“<名词>”“</名词>”是标记,“XML” 是字符数据。

  21. XML整体逻辑结构总结 • XML文档通常以一个XML声明开始 • 通过XML元素来组织XML数据 • XML元素包括标记和字符数据 • 为组织数据更方便、清晰,在字符数据中引入CDATA数据块 • 在文档中引入注释 • 需要给XML处理程序提供一些指示信息,XML文档中可以包含处理指令

  22. XML文档的物理结构 • 参数实体引用与通用实体引用的差异(例2-2,例2-3) 3 DTD的建立和使用

  23. 返回 例2-2 <?xml version=“1.0”encoding=”GB2312”standalone=“no”?> <!DOCTYPE信件[ <!ENTITY lettersign ”张三 某网络公司销售部门 北京市海淀区中关村88号,100000”</正文>> ]> <信件> <收件人>李四</收件人> <主题>hello</主题> <正文>hello!&1ettersign; </信件> 同样,参数实体的引用与通用实体的引用大同小异,只是要把实体换 为%就可以了,形式是: %实体名;

  24. 返回 例2-3 <?xml version=“1.0”encoding=”GB2312“standalone=“no”?> <!DOCTYPE联系人列表[ <!ENTITYA公司地址“北京市五街1234号’> <!ENTITYB公司地址”上海南京路9876号“> ]> <联系人列表> <联系人> <姓名>张三</姓名> <公司>A公司</公司> <地址>&A公司地址;</地址> </联系人> <联系人> <姓名>李四</姓名> <公司>B公司</公司> <地址>&B公司地址;</地址> </联系人> <联系人> <姓名>王五</姓名> <公司>B公司</公司> <地址>&B公司地址;</地址> </联系人> </联系人列表>

  25. DTD的建立和使用

  26. DTD概述 • 概述 • 是一套关于标记符的语法规则 • 可以是XML文档的一部分,但通常是一份单独的或一系列的文档 • 想使用XML进行数据交换的行业或组织可定义自己的DTD • DTD规定了语法分析器解释所有细节

  27. DTD概述 • 内部DTD • 文档由前导说明和文档体构成,前导说明中包含XML声明,文档体中是具体的数据信息,前导说明中可包含DTD定义。 • 一个包含DTD的XML文档的结构(例3-1) 继续

  28. 例3-1 C1ient.xml <?xml version=“1.0”encoding=”GB2312,standalone=“yes”> <!DOCTYPE联系人列表[ <!ELEMENT 联系人列表(联系人)*> <!ELEMENT 联系人(姓名,ID,公司,EMAIL,电话,地址)> <!ELEMENT 夏NT地址(街道,城市,省份)> <!ELEMENT 姓名(#PCDATA)> <!ELEMENT ID(#PCDATA)> <!ELEMENT 公司(#PCDATA)> <!ELEMENT EMAIL(#PCDATA)> <!ELEMENT 电话(#PCDATA)> <!ELEMENT 街道(#PCDATA)> <!ELEMENT 城市(#PCDATA)> <!ELEMENT 省份(#PCDATA)> ]> <?xml—stylesheet type="text/xsl" href="mystyle.xsl"?>

  29. 返回 例3-1 <联系人> <姓名>李四</姓名> <ID>002</ID> <公司>B公司</公司> <EMAlL>1i@bbb.org</EMAIL> <电话>(021)87554321</电话> <地址> <街道>南京路9876号</街道> <城市>上海市</城市> <省份>上海</省份> </地址> </联系人> </联系人列表> <联系人列表> <联系人> <姓名>张三</姓名> <ID>001</ID> <公司>A公司</公司> <EMAIL>zhang@aaa.com</EMAIL> <电话>(010)62345678</电话> <地址> <街道>五街1234号</街道> <城市>北京市</城市> <省份>北京</省份> </地址> </联系人>

  30. DTD概述 • 外部DTD(例3-2,例3-3) • 公用DTD • 每个XML文档单独定义的DTD可推广为一个系统内共享的公用DTD • 关键字system用于引用一个作者或组织所编写的众多XML文档中通用的DTD • 另一种外部DTD,一个由权威机构制定的,提供给特定行业或公众使用的DTD。关键字是PUBLIC(例3-4) 2)元素定义

  31. 返回 例3-2 <? xml version=“1.0” encoding=“GB2312”? > <!ELEMENT 联系人列表(联系人)*> <!ELEMENT 联系人(姓名,ID,公司,EMAIL,电话,地址)> <!ELEMENT 地址(街道,城市,省份)> <!ELEMENT 姓名(#PCDATA)> <!ELEMENT ID(#PCDATA)> <!ELEMENT 公司(#PCDATA)> <!ELEMENT EMAIL(#PCDATA)> <!ELEMENT 电话(#PCDATA)> <!ELEMENT 街道(#PCDATA)> <!ELEMENT 城市(#PCDATA)> <!ELEMENT 省份(#PCDATA)>

  32. 返回 例3-3 < ? xml version=“1.0”encoding=”GB2312” standalone=”no”?> <!DOCTYPE 联系人列表 SYSTEM”fclml.dtd”> <?xml—stylesheet type=”text/xsl” href=“mystyle.xsl”?> <联系人列表> <联系人> <姓名>张三</姓名> <ID>001</ID> <公司>A公司</公司> <EMAIL>zhang@aaa.com</EMAIL> <电话>(010)62345678</电话> <地址> <街道>五街1234号</街道> <城市>北京市</城市> <省份>北京</省份> </地址> </联系人> <联系人> <姓名>李四</姓名> <ID>002</ID> <公司>B公司</公司> <EMAII>1i@bbb.org</EMAII> <电话>(021)87654321</电话> <地址> <街道>南京路9876号</街道> <城市>上海市</城市> <省份>上海</省份> </地址> </联系人> </联系人列表>

  33. 返回 例3-4 <!DOCTYPE 根元素 PUBLIC”DTD名称“”外部DTD的URL”> <!DOCTYPE 联系人列表 PUBLIC”联系人DTD“”http://www.mydomain.com/dtds/fclml.dtd”>

  34. 元素定义 • DTD作用 • 告诉语法分析器它所关联的XML文档的根元素、内容及结构 • 元素说明部分,使用元素类型声明ETD声明所有有效的文档元素 • XML元素可以为空,也可以是纯文本或若干个子元素,子元素同时可以有各自的子元素。DTD通过元素之间父子关系描述整个文档的结构关系。(例3-5)

  35. 元素定义 • 元素及其子元素 • 其核心思想是采用“匹配”的逻辑(例3-6) 3)定义元素属性

  36. 返回 例3-5 < ? xml version=“1.0”encoding=”GB2312” standalone=”yes”?> <!DOCTYPE 联系人列表〔 <!ELEMENT 联系人列表 ANY> <!ELEMENT 联系人(姓名)> <!ELEMENT 姓名(#PCDATA )> 〕 > <联系人列表> <联系人> <姓名>张三</姓名> < /联系人> < /联系人列表>

  37. 返回 例3-6 <!ELEMENT 联系人 (姓名,EMAIL)+> <!ELEMENT 姓名 (#PCDATA)> <!ELEMENT EMAIL (#PCDATA)>

  38. 定义元素属性 • 定义 • 元素名是属性所属的元素的名字 • 属性名是属性的名字 • 缺省值是属性的初值 • 属性类型用来指定其属于哪种有效属性 • 属性值(例3-7,例3-8,例3-9,例3-10)

  39. 例3-7,3-8,3-9 • 例3-7 • <!ATTLIST 元素名 属性名 属性类型 #REQUIRED> • <!ATTLIST 页面作者 姓名 CDATA #REQUIRED> • 例3-8 • <!ATTLIST 元素名 属性名 属性类型 #IMPLIED> • <!ATTLIST 页面作者 • 姓名 CDATA #IMPLIED • 年龄 CDATA #IMPLIED • 联系信息 CDATA # REQUIRED • > • 例3-9 • <!ATTLIST 元素名 属性名 属性类型 #FIXED”缺省值“> • <!ATTLIST 页面作者 • 姓名 CDATA #IMPLIED • 年龄 CDATA #IMPLIED • 联系信息 CDATA #REQUIRED • 网站职务 CDATA #FIXED”页面作者“ • >

  40. 例3-10 • 例3-10 • <!ATTLIST 元素名 属性名 属性类型 ”缺省值“> • <!ATTLIST 页面作者 • 姓名 CDATA #IMPLIED • 年龄 CDATA #IMPLIED • 联系信息 CDATA #REQUIRED • 网站职务 CDATA #FIXED”页面作者“ • 个人爱好 CDATA “上网” • >

  41. 4.Schema的建立与应用

  42. 1. Schema 的建立与应用 1) 在前面,我们介绍了DTD,作为XML 1.0规范的重要组成部分,DTD对于XML文档的结构起到很好的描述作用。 2) XML Schema 实际上也是XML的一种应用,就是将XML DTD重新按照XML语言规范来定义,这充分体现了XML自描述性的特点。

  43. 例4-1 1.<?xml version=“1.0” encording=“GB2312”?> 2. 3. <学生花名册 年级=“六年级” 班级=“一班”> • <学生> • <姓名>李华</姓名> • <籍贯>河北</籍贯> • <年龄>14</年龄> • <电话>62875555 </电话> • </学生> • <学生> • <姓名>王珊</姓名> • <籍贯>北京</籍贯> • <年龄>12</年龄> • <电话>82618888</电话> • </学生> 16. </学生花名册>

  44. 1. Schema 的建立与应用 将上述XML文档的结构用DTD来描述如下: <!DOCTYPE 学生花名册[ <!ELEMENT 学生花名册 (学生*)> <!ATTLIST 学生花名册 年级 CDATA # REQUIRED 班级 CDATA # IMPLIED> <!ELEMENT 学生 (姓名+,籍贯,年龄,电话?)> <!ELEMENT 姓名 (# PCDATA)> <!ELEMENT 籍贯 (# PCDATA)> <!ELEMENT 年龄 (# PCDATA)> <!ELEMENT 电话 (# PCDATA)> ]>

  45. 1. Schema 的建立与应用 3)上述第2行可用下面语句替换: <!DOCTYPE 学生花名册 SYSTEM “roster.dtd”> 4) 不难分析出这个XML文档的结构:根元素“学生花名册”有两个属性,一个是“年级”,另一个是“班级”;“学生花名册”元素下是“学生”元素,该元素不包含文本,但却包含“姓名”、“籍贯”、“年龄”、“电话”四个子元素,这些子元素均只包含文本,而不包涵子元素和属性。

  46. 1. Schema 的建立与应用 5)用XML Schema 来描述,可写成下面的程序,取名rosterschema.xml。 1.<?xml version=“1.0” encording=“GB2312”?> 2.<Schema xmlns=“urn:schemas-microsoft- com:xml-data” xmlns:dt=“urn:schemas-microsoft-com:datatypes”> • <AttributeType name=“年级”/> • <AttributeType name=“班级”/> • <ElementType name=“姓名”/> • <ElementType name=“籍贯”/> • <ElementType name=“年龄”/>

  47. (续上例) 8. <ElementType name=“电话” dt:type=“fixed.14.4”/> 9. <ElementType name=“学生” content=“eltOnly”/> 10. <elementType name=“姓名”/> • <elementType name=“籍贯”/> • <elementType name=“年龄”/> • <elementType name=“电话”/> 14. <ElementType > 15. <ElementType name=“学生花名册” content=“eltOnly”/> • <elementType =“学生”/> • <attribute type=“年级”/> • <attribute type=“班级”/> • </Element Type> 20.</Schema>

  48. 1. Schema 的建立与应用 6)为了给roster.xml指定文档定义规则,roster.xml第2行可用下面语句替换: <学生花名册 xmlns=“x-schema:rosterschema.xml”> 7)本XML Schema 的实现语法受到微软Internet Explorer 5.0的支持。该语法主要综合了W3C的两个Note规范XML-Data(http://www.w3.org/TR/1998/NOTE-XML-data-0105/)和文档内容描述(DCD)(http://www.w3.org/TR/NOTE-dcd),并加入一些扩展。因为微软的地位以及Internet Explorer 5.0的普及程度,因此该语法实现具有较强的适用性。

  49. 1. Schema 的建立与应用 8)XML Schema 让开发更轻松,下面逐句分析一下rosterschema.xml。 • 第1行是XML类型声明语句,指明该文档是一个XML文档,并且符合版本1.0规范;该文档采用GB2312编码。 • 第2行是Schema声明语句,它包含了Schema命名空间的声明。本例中用到了两个命名空间:一个是xmlns=“urn:schemas- microsoft-com:xml-data” ,它指定本文档是一个XMLSchema文档;另一个是xmlns:dt=“urn:schemas-microsoft-com:datatypes”>,它定义了本文档中可以使用的数据类型。

  50. 1. Schema 的建立与应用 • 第3、4行是属性定义语句, 它定义了两个属性:年级和班级。 • 第5~8行是元素定义语句,它定义了两个属性:年级和班级。 • 第9 ~14行定义了本XML Schema的二级元素:学生,指明该元素含有包含四个子元素:姓名、年龄、籍贯、电话。 • 第15~19行定义了本XML Schema的顶级元素:学生花名册,指明该元素包含一个子元素:学生,以及两个属性:年级、班级。 • 第20行是结束标记语句,它指明该XML Schema 的描述到此为止。

More Related