XML基础及相关技术.ppt

上传人:新** 文档编号:567969233 上传时间:2024-07-22 格式:PPT 页数:154 大小:567.50KB
返回 下载 相关 举报
XML基础及相关技术.ppt_第1页
第1页 / 共154页
XML基础及相关技术.ppt_第2页
第2页 / 共154页
XML基础及相关技术.ppt_第3页
第3页 / 共154页
XML基础及相关技术.ppt_第4页
第4页 / 共154页
XML基础及相关技术.ppt_第5页
第5页 / 共154页
点击查看更多>>
资源描述

《XML基础及相关技术.ppt》由会员分享,可在线阅读,更多相关《XML基础及相关技术.ppt(154页珍藏版)》请在金锄头文库上搜索。

1、XML基础及相关技术杨德婷中科院网络中心2002.8.16提 纲n山山重水复疑无路,柳暗花明又一村重水复疑无路,柳暗花明又一村 XML的诞生的诞生n没有规矩,不成方圆XML语法n海纳百川,有容乃大DTD与Scheman花想衣裳云想容XML文件的显示n江山如画,一时多少豪杰XML标准体系框架n千帆竟发,百舸争流关于XML的编辑与浏览工具n问苍茫大地,谁主沉浮XML的应用和发展前景2002-8-162XML基础及相关技术山重水复疑无路,柳暗花明又一村XML的诞生n何谓XMLn为什么要XMLnXML的来龙去脉nXML实例2002-8-163XML基础及相关技术何谓XML(eXtensibleMark

2、upLanguage)什么是置标语言(MarkupLanguage)n超文本置标语言HTML(HyperTextMarkupLanguage)nXML和HTML同属一个大家族置标语言家族n“置标”的一个精确定义是:就数据本身的信息对数据进行编码的方法。nE.g.n用黄色荧光笔把课本上的某些句子加亮,或者干脆在这这些句子些句子 下面划线nHTMLnBOLDBOLD2002-8-164XML基础及相关技术何谓XML什么是置标语言(cont.)nHTML代码显示了一个客户联系信息列表:张三用户ID:001公司:A公司EMAIL:电话:(010)62345678地址:五街1234号城市:北京市省份:北

3、京李四ID:002公司:B公司EMAIL:libbb.org电话:(021)87654321地址:南京路9876号城市:上海市省份:上海这段HTML置标数据在浏览器中的显示效果如下:n张三nID:001n公司:A公司nEMAIL:n电话:(010)62345678n地址:五街1234号n城市:北京市n省份:北京n李四nID:002n公司:B公司nEMAIL:libbb.orgn电话:(021)87654321n地址:南京路9876号n城市:上海市n省份:上海2002-8-165XML基础及相关技术何谓XML什么是XMLneXtensibleMarkupLanguageneXtensible:X

4、ML是一种可扩展的元置标语言,它可用以规定新的置标规则,并根据这个规则组织数据。n数据置标:一类偏重于语意描述;一类偏重于显示方式的描述n置标的语法:DTD,Scheman置标的含义:CSS,XSL2002-8-166XML基础及相关技术何谓XML什么是XML(cont.)n数据置标:一类偏重于语意描述;一类偏重于显示方式的描述(SVG,SMIL)nFCLML(F_companysClientListMarkupLanguage)F公司的客户列表置标语言(语义描述)张三001A公司(010)62345678五街1234号北京市北京李四002B公司libbb.org(021)87654321南京

5、路9876号上海上海2002-8-167XML基础及相关技术何谓XML什么是XML(cont.)n置标的语法、句法和结构:DTD,Schemanfclml.dtd:n置标的含义, 向应用程序,比如浏览器,提供如何处理显示的指示说明。nXSL,CSSn每当看到一个联系人标签,用一个UL标签显示它。同样,/联系人转换为一个/UL标签。n所有的姓名标签被转换为LI标签加以显示。同样,/姓名转换LI标签。n所有的EMAIL标签被转换为LI标签加以显示。同样,/EMAIL转换为/LI标签。2002-8-168XML基础及相关技术为什么要XML仍从HTML说起 “从网络使用之初,我们一直在所有文件中都使用

6、近乎相同的格式,HTML格式.使用具有固定语法的固定标记集具有一定的好处,即简单性。但是,HTML非常有限,网页设计者希望能够对页面的表现能力具有更多的控制,这就需要求助于XML。”n专门为描述网页的表现形式而设计的,疏于对信息语意及其内部结构的描述。n对形式的描述能力实际也还是非常不够的,无法描述矢量图形、科技符号和一些其它的特殊显示效果。nIE和Netscape都给HTML加入了一些特殊的标记,以便为自己的浏览器增加一些特殊的显示效果。 HTML的标记日益臃肿,文件结构混乱而缺乏条理,导致浏览器的设计越来越复杂,还降低了不同浏览器之间的兼容性。n搜索时间长.n动态内容需要下载的部件太多。n

7、HTML可扩展性差.2002-8-169XML基础及相关技术为什么要XMLXML的第一大优势自由民主的网上世界n自由地制定你自己的标记语言。n允许各个组织、个人建立适合他们自己需要的标记库,并且,这个标记库可以迅速地投入使用n允许各个不同的行业根据自己独特的需要制定自己的一套标记,但它并不强迫所有浏览器都能处理这些成千上万个千奇百怪的标记,同样也不要求标记语言的制定者制定出一个非常详尽非常全面的语言从而适合各个行业各个领域的应用。n现在许多行业、机构都利用XML定义了自己的标记语言。比较早而且比较典型的是下面两个实例:n化学标记语言CML(ChemistryMarkupLanguage)n数学

8、标记语言MathML(MathematicalMarkupLanguage)2002-8-1610XML基础及相关技术为什么要XMLXML的第二大优势超越于格式之上n在HTML中,显示方式内嵌于数据之中n在这些数据中寻找信息非常困难n数据自身的逻辑不得不屈服于HTML语言规范的逻辑n张三用户ID: 001公司: A公司EMAIL: 电话: (010)62345678地址: 五街1234号城市: 北京市省份: 北京ZIP: 100001 n在XML中,显示样式从数据信息中抽取出来,放在样式单文件中n在XML中数据搜索可以简单高效地进行nXML是自我描述语言n 张三 001 A公司 (010)6

9、2345678 五街1234号 北京市 北京 100001 。2002-8-1611XML基础及相关技术为什么要XMLXML的其它优点nXML遵循严格的语法要求(与HTML相比)n不但要求标记配对、嵌套,而且还要求严格遵守DTD的规定n提供较好的可读性和可维护性n减轻了浏览器开发人员的负担,也提高了浏览器的时间空间效率nXML便于不同系统之间信息的传输n各种不同的系统之间可以采用XML作为交流媒介。XML不但简单易读,而且可以标注各种文字、图像甚至二进制文件nXML具有较好的保值性2002-8-1612XML基础及相关技术为什么要XMLXML的一点缺陷?nXML固然好,但也有它不足的一面,阻碍

10、了它的发展。而其中最大的不足,便是至今都没有什么能够充分支持它的应用处理程序。n随着越来越多的用户看到将他们的数据用XML组织的好处后,相信XML的分析算法和相应的工具也会逐渐完善起来,XML的后端支持将变得越来越简单。从IE和Netscape所提供的内置XML分析工具中,我们还是看到了无限希望嘛!2002-8-1613XML基础及相关技术为什么要XMLXML与HTML的比较2002-8-1614XML基础及相关技术XML的来龙去脉XML之发展史nXML的两个先驱SGML和HTMLnSGML(StandardGeneralizedMarkupLanguage)n它为语法置标提供了异常强大的工具

11、,同时具有极好的扩展性,因此在分类和索引数据中非常有用。目前,SGML多用于科技文献和政府办公文件中。nSGML非常复杂,而且非常昂贵。nHTMLnHTML是一个非常简单的SGML语言,免费;获得了广泛的支持。nHTML有许多致命的弱点,正如前面所分析的那样。nXMLn国际互联网论坛W3C(World Wide Web Consortium):为WorldWideWeb的发展开发通用的协议和标准。n既具有SGML的强大功能和可扩展性,同时又具有HTML的简单性。SGML中所有非核心的、未被使用的和含义模糊的部分都被删除,剩下的就成为短小精干的置标工具XMLnW3C于1998年2月批准了XML的

12、1.0版本2002-8-1615XML基础及相关技术XML的来龙去脉置标语言家族一览2002-8-1616XML基础及相关技术XML实例n为置标语言FCLML制定的DTDfclml.dtd 2002-8-1617XML基础及相关技术XML实例(cont.)n关于客户联系信息的标准XML文件client.xml 张三 001 A公司 (010)62345678 五街1234号 北京市 北京 李四 002 B公司 libbb.org (021)87654321 南京路9876号 上海 上海 2002-8-1618XML基础及相关技术XML实例(cont.)n为client.xml制定一个样式单m

13、ystyle.xsl F公司的客户联系信息 用户ID: 公司: EMAIL: 电话: 街道: 城市: 省份: 2002-8-1619XML基础及相关技术XML实例(cont.)nXML文件被样式单转换为下面的HTML文件F公司的客户联系信息 张三用户ID: 001公司: A公司EMAIL: 电话: (010)62345678地址: 五街1234号城市: 北京市省份: 北京 李四ID: 002公司: B公司EMAIL: libbb.org电话: (021)87654321地址: 南京路9876号城市: 上海市省份: 上海2002-8-1620XML基础及相关技术XML实例(cont.)n所看到的

14、显示结果,实际上同上面这个HTML文件的显示结果是相同的n张三 n用户ID: 001 n公司: A公司 nEMAIL: n电话: (010)62345678 n地址: 五街1234号 n城市: 北京市 n省份: 北京 n李四 nID: 002 n公司: B公司 nEMAIL: libbb.org n电话: (021)87654321 n地址: 南京路9876号 n城市: 上海市 n省份: 上海 2002-8-1621XML基础及相关技术提 纲n山重水复疑无路,柳暗花明又一村XML的诞生n没有规矩,不成方圆没有规矩,不成方圆XML语法语法n海纳百川,有容乃大DTD与Scheman花想衣裳云想容

15、XML文件的显示n江山如画,一时多少豪杰XML标准体系框架n千帆竟发,百舸争流关于XML的编辑与浏览工具n问苍茫大地,谁主沉浮XML的应用和发展前景2002-8-1622XML基础及相关技术没有规矩,不成方圆XML语法n什么是什么是“形式良好的形式良好的”XML文件文件nXML文件的逻辑结构nXML文件的整体结构n用XML声明作为开头nXML文件的精髓XML元素nXML元素n字符数据n标记nCDATAn注释n处理指示nXML文件的物理结构n实体n实体的两种类型n实体的使用方式2002-8-1623XML基础及相关技术什么是“形式良好的”XML文件nXML是一个元置标语言,可以看作是用来产生置标

16、语言的工具。因此,XML并没有预定义一个特定的标记集,而是描述了一个用来定义标记集的方法。当我们用这个方法规定好一个标记集,并根据这些规定填入文本内容后,这些标记就和纯文本一起构成了一个XML文件。nXML文件实际上是广义的文件,更准确的叫法应该是一个“数据对象”,但是为了简便起见,我们仍称它为“文件”。n在XML中,“形式良好”(well-formed)有着明确的标准,即是要遵要遵守守XML1.0规范中的语法规则规范中的语法规则。无论是从物理结构上讲,还是从逻辑结构上讲,XML都必须符合规范,才能被正确解释处理。nXML创建之初的目标就是希望XML文件既容易被人阅读,又容易被机器理解。所以,

17、确保你的文件是“形式良好的”,这是一个最低标准,符合了这个标准,就能保证连最笨的机器也能阅读你的XML文件了。保证了XML严密的条理性、逻辑性和良好的结构性,XML的优点也正是依靠它们体现出来的。2002-8-1624XML基础及相关技术没有规矩,不成方圆XML语法n什么是“形式良好的”XML文件nXML文件的逻辑结构文件的逻辑结构nXML文件的整体结构文件的整体结构n用用XML声明作为开头声明作为开头nXML文件的精髓文件的精髓XML元素元素nXML元素元素n字符数据字符数据n标记标记nCDATAn注释注释n处理指示处理指示nXML文件的物理结构n实体n实体的两种类型n实体的使用方式2002

18、-8-1625XML基础及相关技术XML文件的逻辑结构XML的整体结构n1 2 3 4 5 XML 6 XML是一种可扩展的源置标语言,它可用以规定新的置标规则,并根据这个规则组织数据7 8 9 !CDATA10 11 张三12 13 14 15 16 17nXML文件最基本的构成nXML声明:1n处理指示(可选):12nXML元素:317n标记:e.g.5n字符数据:e.g.5“XML”nCDATA:914n注释:82002-8-1626XML基础及相关技术XML文件的逻辑结构用XML声明作为开头n当写一个XML文件时,最好以一个XMLXML声明声明作为开始。XML声明在文件中是可选内容,但

19、W3C推荐加入这一行声明。因此,作为一个良好的习惯,我们通常把XML声明作为XML文件的第一行。nXML声明是处理指示的一种。它的作用就是告诉XML处理程序:“下面这个文件是按照XML文件的标准对数据进行置标的”。n一个完整的XML声明是: ?encoding=“GB2312”?nXML声明由“”结束。在“?”后面紧跟着处理指示的名称 “xml”。2002-8-1627XML基础及相关技术XML文件的逻辑结构用XML声明作为开头(cont.)? version=“1.0” standalone=“no” encoding=“GB2312”?n三个属性nversion属性n在一个XML的处理指示

20、中必须包括version属性指明所采用的XML的版本号,而且,它必须在属性列表中排在第一位。当前的XML最新版本是1.0.nstandalone属性 (可选)n这个属性表明该XML文件是否和一个独立的置标声明文件配套使用。因此,如果该属性置为“yes”,说明没有另外一个配套的DTD文件来进行置标声明。相反,如果这个属性置为“no”,则有可能有这样一个文件。nencoding属性 (可选)n所有的XML语法分析器都要支持8位和16位的编码标准。n几个常见的编码: 简体中文码(GB2312)、繁体中文码(BIG5)、西欧字符(UTF-8)2002-8-1628XML基础及相关技术XML文件的逻辑结

21、构XML元素n元素的形式:数据内容数据内容n元素中还可以再嵌套别的元素n所有的XML文件都至少包含一个形式良好的根元素。根元素,又称为文件标记,紧跟在XML声明之后,如果该XML文件中还内嵌了DTD,则这个根标记紧跟在DTD之后。根标记必须是一个非空的标记,其中包含了整个文件的数据内容。 nXML中开始和结束标记之间的文字称作“字符数据”,而把置标内的标示文字称作“标记”。2002-8-1629XML基础及相关技术XML文件的逻辑结构字符数据n一对标记之间出现的字符数据可以是任何合法的UNICODE字符n为了避免把字符数据和标记中需要用到的一些特殊符号相混淆,XML还提供了一些有用的实体引用。

22、当在字符数据中需要使用这些特殊符号时,我们采用它的实体引用来代替。n在“示例”这个标记中出现文本:“张三”n示例<姓名>张三</姓名>/示例n写为:n字符&“实体引用><&"'2002-8-1630XML基础及相关技术XML文件的逻辑结构标记nXML的标记和HTML的标记在模样上大体相同,除了注释和CDATA部分以外,所有符号“”和符号“”之间的内容都称为标记。其基本形式为: 标记名标记名 (属性名(属性名=“=“属性取值属性取值”)* *nXML对于标记的语法规定比HTML要严格得多n标记必不可少n大小写有所区分n要有正确的结束

23、标记。n结束标记除了要和开始标记在拼写和大小写上完全相同,还必须在前面加上一个斜杠“/”。如果开始标记是HELLO,结束标记应该写作/HELLO。n当一对标记之间没有任何文本内容时,可以不写结束标记,而在开始标记的最后惯以斜杠“/”来确认。这样的标记称为“空标记”。如:n标记要正确嵌套2002-8-1631XML基础及相关技术XML文件的逻辑结构标记(cont.)n标记命名要合法n标记应该以字母、下划线“_”或冒号“:”开头,后面跟字母、数字、句号“.”、冒号、下划线或连字符“-”,但是中间不能有空格,而且任何标记不能以“xml”起始。另外,最好不要在标记的开头使用冒号,尽管它是合法的,但可能

24、会带来混淆。n在XML1.0标准中允许使用任何长度的标记,不过,现实中的XML处理程序可能会要求标记的长度限制在一定范围内。 n有效使用属性n标记中可以包含任意多个属性。在标记中,属性以名称/取值对出现,属性名不能重复,名称与取值之间用等号“=”分隔,且取值用引号引起来。 如:n属性命名的规范与标记命名规范大体相似,需要注意有效字母、大小写等一系列问题。不过,在必要的时候,属性中也可以包含空白符,标点和实体引用。需要特别注意的是,在XML中属性的取值必须用引号引起来,但在HTML中这一点并不严格要求。n属性的所有赋值都被看作是字符串。如: 圆柱体 半径=“10” 高=“13”程序应该能够把字符

25、串“10”和“13”转化为它们所代表的数字。2002-8-1632XML基础及相关技术XML文件的逻辑结构CDATAn在一个特殊的标记CDATA下,所有的标记、实体引用都被忽略,而被XML处理程序一视同仁地当作字符数据看待。CDATA的形式如下: ! CDATA CDATA 文本内容文本内容 nCDATA的文本内容中是不能出现字符串“”当你的文本数据中包含大量特殊符号时,你不得不通篇地使用实体引用,把本来很清晰的一段文字搞得乱七八糟。 <联系人><姓名>张三</姓名><EMAIL></EMAIL></联系人>为了避免这种不

26、便,你可以把这些字符数据放在一个CDATA数据块中,这样不管它看上去是一个标记还是一个实体引用,这些数据统统被当作字符照单全收。!CDATA张三 2002-8-1633XML基础及相关技术XML文件的逻辑结构注释n在HTML中,注释是用“!-”和“-”引起来的。在XML中,注释的方法完全相同。如: nXML处理器对于注释中的一切内容都会视而不见,注释中出现的标记也一同被忽略。n在XML文件中使用注释时,同样要遵守几个规则n在注释文本中不能出现字符“-”或字符串“-”n不要把注释文本放在标记之中,否则,它就不是一个“形式良好的”XML文件了。类似地,不要把注释文本放在实体声明中,也不要放在XML

27、声明之前。n注释不能被嵌套。2002-8-1634XML基础及相关技术XML文件的逻辑结构处理指示n处理指示是用来给处理XML文件的应用程序提供信息的。也就是说,XML分析器可能对它并不感兴趣,而把这些信息原封不动地传给XML应用程序。然后,这个应用程序来解释这个指示,遵照它所提供的信息进行处理,或者再把它原封不动地传给下一个应用程序。正如我们前面看到的,XML声明就是一个处理指示。n所有的处理指示应该遵循下面的格式: ?处理指示名?处理指示名 处理指示信息?处理指示信息?n一个处理指示来指定与这个XML文件配套使用的样式单的类型及文件名: 2002-8-1635XML基础及相关技术没有规矩,

28、不成方圆XML语法n什么是“形式良好的”XML文件nXML文件的逻辑结构nXML文件的整体结构n用XML声明作为开头nXML文件的精髓XML元素nXML元素n字符数据n标记nCDATAn注释n处理指示nXML文件的物理结构文件的物理结构n实体实体n实体的两种类型实体的两种类型n实体的使用方式实体的使用方式2002-8-1636XML基础及相关技术XML文件的物理结构实体n从物理结构上讲,XML文件归根结底是由一组“实体”构成的。n实体充当着和别名类似的角色。即,一个简单的实体名称可以用来代表一大段文本内容。象任何计算机别名系统一样,实体引用简化了你的录入工作,因为每当你要使用那一大段文本时,你

29、只须使用它的别名就可以了,处理器会自动为你把这个别名替换为相应的文本。n所有的XML文件都包含了一个“根实体”,又称作“文件实体”。这个实体是由XML本身给出的,无须显式定义就可以使用,它指的其实就是整个文件的内容。假如你为你的信件署名定义了一个实体lettersign,它代表下面这一大段文本:张三 某网络公司销售部门 北京市海淀区中关村88号,100000信件 收件人李四/收件人 主题hello/主题 正文hello!& &lettersignlettersign ;/正文/信件2002-8-1637XML基础及相关技术XML文件的物理结构实体的两种类型n一般实体n定义一般实体的格式!ENT

30、ITY ENTITY 实体名实体名 “ “文本内容文本内容”n也可以指定一个实体代替一个外部文件的内容,此时要使用SYSTEM这个关键字。n参数实体n参数实体既可以是内部的也可以是外部的。不过,参数实体只用在DTD中。参数实体的格式与一般实体很类似,只不过中间要加上“%”符。 !ENTITY % !ENTITY % 实体名实体名 文本内容文本内容 !ENTITY lettersign张三某网络公司销售部门北京市海淀区中关村88号,100000!ENTITY lettersignSYSTEM http:/ 2002-8-1638XML基础及相关技术XML文件的物理结构实体的使用方式n实体声明n对

31、于实体的声明应该放在文件类型DOCTYPE中。DOCTYPE一般放在文件头(即XML声明和DTD)之后,XML元素之前。n实体引用n一般实体 & &实体名;实体名;n参数实体 % %实体名;实体名;n实体引用的几点规则n在引用XML实体之前,必须已经在XML文件中对此实体进行过声明; n在实体引用中不能出现空格。也就是说,& lettersign;和&letterhead ;的用法都会引起错误。 n尽管在一个实体中可以再引用其它实体,但是不能出现循环引用。也就是说,一个实体不能引用它自己;同样,也不能出现实体A引用实体B,然后实体B再反过来引用实体A的情况。 n实体引用不能在DOCTYPE声明

32、中出现。 n实体引用的文本必须是形式良好的XML。 具体数据内容2002-8-1639XML基础及相关技术XML文件的物理结构实体的使用方式n实体引用不仅可以出现在字符数据中,还可以出现在标记的属性中。如: n如果在属性中出现实体引用,不但要遵守前面所述的实体引用的种种规则,还要注意以下两点: n在标记属性中不能引用一个外部实体。n引用的文本中不能出现字符“”,否则替换后就不再是一个“形式良好的”XML文件了。 !DOCTYPE 联系人列表 张三 A公司 &A公司地址; 李四 B公司 &B公司地址;/地址 王五 B公司 &B公司地址;/地址 2002-8-1640XML基础及相关技术提 纲n山

33、重水复疑无路,柳暗花明又一村XML的诞生n没有规矩,不成方圆XML语法n海纳百川,有容乃大海纳百川,有容乃大DTD与与Scheman花想衣裳云想容XML文件的显示n江山如画,一时多少豪杰XML标准体系框架n千帆竟发,百舸争流关于XML的编辑与浏览工具n问苍茫大地,谁主沉浮XML的应用和发展前景2002-8-1641XML基础及相关技术海纳百川,有容乃大DTD与SchemanDTD 的定义的定义nSchema的定义nXML命名空间2002-8-1642XML基础及相关技术DTD的定义nDTD的基本结构的基本结构nDTD引入引入“有效的有效的”XML文件中文件中n内部内部DTDn外部外部DTDn公

34、用公用DTDn定义元素及其后代n元素类型声明n定义元素及其子元素n有顺序的子元素n重复元素n成组元素nOR或n可选子元素n混合内容n空元素n定义元素属性n定义有效的元素属性n属性缺省值n属性类型nCDATA类型n枚举类型nID和IDREFnNMTOKEN和NMTOKENSnNOTATION类型n实体属性类型与参数实体nDublinCoreMetadataDTD2002-8-1643XML基础及相关技术DTD的基本结构DTD引入“有效的”XML文件中n一个“有效的”(valid)文件首先应该是“形式良好”(well-formed)的。还必须遵守文件类型描述DTD(Document Type De

35、finition)中定义的种种规定。nDTD实际上是“元标记”这个概念的产物,它描述了一个置标语言的语法和词汇表,也就是定义了文件的整体结构以及文件的语法。简而言之,DTD规定了一个语法分析器为了解释一个“有效的”XML文件所需要知道的所有规则的细节。n为了说明特定的语法规则,DTD采用了一系列正则式,语法分析器将这些正则式与XML文件内部的数据模式相匹配,从而判别一个文件是否是有效的。n一个“有效的”XML文件就是一个“形式良好的”SGML文件,也就是说,符合DTD中定义的语法是SGML文件的基本要求。从这个意义上说,XML把合法文件的范围扩大了,既包括“有效的”XML,也可包括“形式良好的

36、”XML。2002-8-1644XML基础及相关技术DTD的基本结构内部DTDn最简单的使用DTD的方法是在XML文件的序言部分加入一个DTD描述,加入的位置是紧接在XML处理指示之后。一个包含DTD的XML文件的结构为:n文件体.nclient.xml!DOCTYPE 联系人列表 张三 001 A公司 (010)62345678 五街1234号 北京市 北京 李四 2002-8-1645XML基础及相关技术DTD的基本结构外部DTDn外部DTD的好处是:它可以方便高效地被多个XML文件所共享。当许多组织需要统一它们的数据交换格式时,它们就是通过外部DTD来完成的。n这样做不仅简化了输入工作

37、,还保证当你需要对DTD做出改动时,不用一一去改每个引用了它的XML文件,只要改一个公用的DTD文件就足够了。n引用一个外部DTD,必须修改XML声明和DOCTYPE声明。nnn举例nnn2002-8-1646XML基础及相关技术DTD的基本结构外部DTDnn张三001A公司(010)62345678五街1234号北京市北京100001李四002B公司libbb.org(021)87654321南京路9876号上海上海2000022002-8-1647XML基础及相关技术DTD的基本结构公用DTDnSYSTEM不是引用外部DTD的唯一方法,这个关键字主要用于引用一个作者或组织所编写的众多XML

38、文件中通用的DTD。还存在一种外部DTD,它是一个由权威机构制订的,提供给特定行业或公众使用的DTD。因此,另一个引用外部DTD的办法是使用关键字PUBLIC,引用这一类公开给公众使用的DTD。n当使用关键字PUBLIC进行引用时,这个外部DTD还需要得到一个标识名。引用公共DTD的形式为 !URL2002-8-1648XML基础及相关技术DTD的基本结构公用DTD(cont.)nDTD名称只能包含字母、数字、空格和下面的符号:_%$#()+:=/!*;?。同时,DTD名称还必须符合一些标准的规定。例如,ISO标准的DTD以“ISO”三个字母开头;被改进的非ISO标准的DTD以加号“+”开头;

39、未被改进的非ISO标准的DTD以减号“-”开头。n无论是哪一种情况,开始部分后面都跟着两个斜杠“/”及DTD所有者的名称。在这个名称之后又是两个斜杠“/”,再然后是DTD所描述的文件的类型。最后,在又一对斜杠之后是语言的种类(参见ISO 639)。n2002-8-1649XML基础及相关技术DTD的定义nDTD的基本结构nDTD引入“有效的”XML文件中n内部DTDn外部DTDn公用DTDn定义元素及其后代定义元素及其后代n元素类型声明元素类型声明n定义元素及其子元素定义元素及其子元素n有顺序的子元素有顺序的子元素n重复元素重复元素n成组元素成组元素nOR或或n可选子元素可选子元素n混合内容混

40、合内容n空元素空元素n定义元素属性n定义有效的元素属性n属性缺省值n属性类型nCDATA类型n枚举类型nID和IDREFnNMTOKEN和NMTOKENSnNOTATION类型n实体属性类型与参数实体nDublinCoreMetadataDTD2002-8-1650XML基础及相关技术定义元素及其后代元素类型声明(ETD)nETD不但说明了每个文件中可能存在的元素,给出了元素的名字,而且给出了元素的具体类型。一个XML元素可以为空,也可以是一段纯文本,还可以有若干个子元素,而这些子元素同时又可以有它们的子元素。DTD正是通过元素之间的父子关系,描述了整个文件的结构关系。nETD应该采用如下的结

41、构: ! !DOCTYPE 联系人列表 张三 2002-8-1651XML基础及相关技术定义元素及其后代元素类型声明(cont.)n注意1.除了根元素外,在定义其它元素时使用关键字ANY都是不好的习惯。一个定义明确的DTD,实际上会使你在书写XML文件时有规可循,方便了你的工作和语法分析器的工作。2.在定义元素时,ETD的顺序是无关紧要的。3.不能对不同的元素使用相同的元素名,即便这些元素的内容、包含的子元素不同也不行,因为它只会引起文件各个元素的混淆,使文件的可读性大打折扣。4.元素名的第一个字母必须是字母、或下划线(_)、或冒号(:),后跟字母、数字、句号(.)、冒号、下划线、连结号(-)

42、的组合,并且不能包含空白符,不能以“xml”开头。5.尽管XML1.0标准允许使用任何长度的文件名,但是实际的XML处理器常常会限制标记名的长度。 2002-8-1652XML基础及相关技术定义元素及其后代定义元素及其子元素n元素定义是由它们的元素内容模型(ECM)来描述的,也就是说,是由紧跟元素后面的括号中的内容来定义的。nECM中的内容采取一组正则表达式的形式。元字符定义+出现一次或多次*出现零次或多次?可选,不出现或出现一次()一组要共同匹配的表达式|OR,或,AND,要求严格遵从顺序要求元素A元素B元素C元素列表,无须遵从顺序要求2002-8-1653XML基础及相关技术定义元素及其后

43、代有顺序的子元素n一个元素的各个子元素之间可以以任意顺序出现,也可以强制遵循一定的顺序。 n不要求顺序的子元素:用空格分隔子元素n要求顺序的子元素:用逗号“,”分隔两个子元素 张三 张三2002-8-1654XML基础及相关技术定义元素及其后代重复元素 张三 张三2002-8-1655XML基础及相关技术定义元素及其后代成组元素n子元素可以使用括号并为一组。 张三 李四 libbb.org 王五 wangccc.org 2002-8-1656XML基础及相关技术定义元素及其后代OR或 张三 张三 12345678 张三 张三 12345678 张三 在一个组中,只允许使用一种连

44、接符(例如“,”或“|”)。2002-8-1657XML基础及相关技术定义元素及其后代可选子元素n 张三 五街1234号 北京市 北京 张三 2002-8-1658XML基础及相关技术定义元素及其后代混合内容!DOCTYPE CONTACTS 张三 (010)62345678 这是关于张三的信息 2002-8-1659XML基础及相关技术定义元素及其后代空元素n还有一种情况是,一个元素中不包含任何子元素,也不包含纯文本。n对于这种情况,我们可以定义一个空标记。当然,定义这样一个标记很简单,你只需要使用关键字EMPTYEMPTY就可以了,例如: n这样,在你的XML文件中,就可以使用一个空元

45、素。2002-8-1660XML基础及相关技术DTD的定义nDTD的基本结构nDTD引入“有效的”XML文件中n内部DTDn外部DTDn公用DTDn定义元素及其后代n元素类型声明n定义元素及其子元素n有顺序的子元素n重复元素n成组元素nOR或n可选子元素n混合内容n空元素n定义元素属性定义元素属性n定义有效的元素属性定义有效的元素属性n属性缺省值属性缺省值n属性类型属性类型nCDATA类型类型n枚举类型枚举类型nID和和IDREFnNMTOKEN和和NMTOKENSnNOTATION类型类型n实体属性类型与参数实体实体属性类型与参数实体nDublinCoreMetadataDTD2002-8-

46、1661XML基础及相关技术定义元素属性定义有效的元素属性n n在DTD中定义属性时,我们使用下面的格式: ! n元素名是属性所属的元素的名字;属性名是属性的命名;缺省值说明在XML文件中,如果没有特别说明属性的取值,语法分析器默认它具有的取值;属性类型则用来指定该属性是属于十个有效属性类型中的哪种类型。n注意:注意:由于ATTLIST是一个属性的列表,它可以包含很多属性,在实际应用中,一个元素也经常有多个属性。n2002-8-1662XML基础及相关技术定义元素属性属性缺省值n必须赋值的属性REQUIREDn不用提供缺省值。 n属性值可有可无的属性IMPLIEDn文法解释器不再强行要求你在X

47、ML文件中给该属性赋值,而且也无须在DTD中为该属性提供缺省值。可以说,这是对属性值有无的最低要求,现实中经常用到。 n固定取值的属性FIXEDn提供一个缺省值,并且不希望XML文件的编写者把你的缺省值替代掉。n定义缺省值的属性n不使用上面任何一种关键字的话,该种属性就是属于这种类型。对于这种属性,你需要在DTD中为它提供一个缺省值。而在XML文件中可以为该属性给出新的属性值来覆盖事先定义的缺省值,也可以不另外给出属性值,后一种情况下它就默认为采用DTD中给出的缺省值。 2002-8-1663XML基础及相关技术定义元素属性属性类型n一个元素属性可以为以下十种类型中的任意一种:nCDATA n

48、Enumerated nID nIDREF nIDREFS nENTITY nENTITIES nNMTOKEN nNMTOKENS nNOTATION 2002-8-1664XML基础及相关技术定义元素属性CDATA类型nCDATA指的是纯文本,即由字符、符号“&”、小于号“”和引号“”组成的字符串。n!DOCTYPE 剧本 我可不这么认为! 为什么呢?2002-8-1665XML基础及相关技术定义元素属性枚举类型n属性也可以被描述为一组可接受的取值的列表,XML文件中对属性的赋值将从这个列表中选取一个值。这类属性属于枚举类型ENUMERATED,不过,关键字ENUMERATED是不出现在D

49、TD定义中的。n!DOCTYPE 购物篮 2002-8-1666XML基础及相关技术定义元素属性ID类型nID是用属性值的方式为文件中的某个元素定义唯一标识的方法,它的作用类似于HTML文件中的内部链接。在大多数情况下,ID由处理文件的程序或脚本语言使用。nID的值必须是一个有效的XML名称,它由字母、数字或下划线开始,名字中不能出现空白符。n另外一般而言,不要给ID类型的属性事先指定缺省值,这很容易引起不同的元素具有相同的标识的情况,更不能使用FIXED型的缺省值。此类属性经常使用REQUIRED缺省类型,当然,这也不是必须的。有的应用并不要求每个元素都有自己的标识,所以,也可以使用IMPL

50、IED缺省类型。n!DOCTYPE 联系人列表 张三 李四 libbb.org 2002-8-1667XML基础及相关技术定义元素属性IDREF类型nIDREF类型允许一个元素的属性使用文件中的另一个元素,方法就是把那个元素的ID标识值作为该属性的取值。n!DOCTYPE 联系人列表 张三 李四 2002-8-1668XML基础及相关技术定义元素属性NMTOKEN和NMTOKENSn类型NMTOKEN和NMTOKENS是诸多属性类型中面向处理程序的又一个类型。这两个类型用于指示一个有效的名字。当需要把一个元素和其它的元件,例如一个JAVA类或一个安全算法,相联系时,可以让它们助你一臂之力

51、。n关于元素的定义: 授权用户 NMTOKENS #IMPLIEDnXML文件: blah blah blah2002-8-1669XML基础及相关技术定义元素属性NOTATION类型n现实世界中存在着很多无法或不易用XML格式组织的数据,例如图象、声音、影象等等。对于这些数据,XML应用程序常常并不提供直接的应用支持。通过为它们设定NOTATION类型的属性,可以向应用程序指定一个外部的处理程序。例如,当你想要为一个给定的文件类型指定一个演示设备时,可以用NOTATION类型的属性作为触发。n要使用NOTATION类型作为属性的类型,首先要在DTD中为可选用的记号作出定义。定义的方式有两种,

52、一种是使用MIME类型,形式是: n再有一种是使用一个URL路径,指定一个处理程序的路径。 !DOCTYPE 文件 2002-8-1670XML基础及相关技术定义元素属性实体属性类型n内部实体定义:!n外部实体定义: n引用方式:& &实体名;实体名;n使用关键字ENTITYENTITY,则声明一个属性是实体类型,它的取值为已定义的实体。!DOCTYPE 文件 2002-8-1671XML基础及相关技术定义元素属性参数实体n参数实体专门用在DTD中。n定义方式nnn引用方式为: %实体名;n2002-8-1672XML基础及相关技术DublinCoreMetadataDTD!-DTD2001-

53、11-28forExpressingSimpleDublinCoreinRDF/XMLhttp:/dublincore.org/documents/2001/11/28/dcmes-xml/PublicID:-/DUBLINCORE/DCMESDTD20011128/ENAuthors:DaveBeckettEricMillerDanBrickleyBasedonDublinCoreMetadataElementSet,Version1.1:ReferenceDescriptionhttp:/dublincore.org/documents/1999/07/02/dces/ThisDTDisf

54、orinformationonlyandNON-NORMATIVE.-2002-8-1673XML基础及相关技术DublinCoreMetadataDTD2002-8-1674XML基础及相关技术DublinCoreMetadataDTD2002-8-1675XML基础及相关技术DublinCoreMetadataDTD2002-8-1676XML基础及相关技术DublinCoreMetadataDTD2002-8-1677XML基础及相关技术海纳百川,有容乃大DTD与SchemanDTD的定义nSchema的定义的定义nXML命名空间2002-8-1678XML基础及相关技术Schema的定

55、义nSchema的诞生n定义元素及其后代nSchema的简单实例nSchema文件的结构n用Schema定义元素及其内容n用Schema定义元素属性nSchema的特色扩展数据类型nSchema中的注释nSchema的应用2002-8-1679XML基础及相关技术Schema的诞生nSchema也是XML的一种应用,它是将DTD重新使用XML语言规范来定义。n这个利用DTD把DTD改写成的Schema,它可具有许多“青出于蓝而胜于蓝”的优势。 n一致性nDTD的书写结构和XML文件的结构仿佛有着天壤之别,后者清晰直观,前者复杂晦涩。nSchema建立在XML之上,它的样子和一般的XML文件完全

56、相同,使得XML达到了从内到外的完美统一。因为Schema本身也是一种XML,可以被现有的XML编辑制作工具所编辑、被XML语法分析器所解析、被XML应用系统所利用,既有投资得到了最大程度的保护。 2002-8-1680XML基础及相关技术Schema的诞生(cont.)n扩展性n没有数据类型,无形之中大大增加了程序员的开发难度和工作量。n虽然DTD中也定义了一些数据类型,但那都是针对属性类型而定义的,而且类型非常有限。nSchema对DTD进行了扩充,引入了数据类型,很好地解决了这一问题。 n易用性nXML Schema取代DTD的另一个原因要归结于DOM和SAX。作为一种XML API,D

57、OM和SAX只是对XML实例文档有效,对于DTD则无能为力。n规范性n同DTD一样,Schema也提供了一套完整的机制以约束XML文档中置标的使用,但相比之下,后者基于XML,更具有规范性。n互换性n可根据需要设计适合自己应用的Schema。通过映射机制,还可以将不同的Schema进行转换,以实现更高层次的数据交换。2002-8-1681XML基础及相关技术定义元素及其后代Schema的简单实例 2002-8-1682XML基础及相关技术定义元素及其后代Schema文件的结构n一个Schema的结构如下: .nSchema具有两个属性:name指定该Schema的名称,而xmlns则指定该Sc

58、hema包含的命名空间。注意,一个XML Schema文档中可以包含多个命名空间。n2002-8-1683XML基础及相关技术定义元素及其后代用Schema定义元素及其内容nElementType元素元素nnmodelmodel指定该元素是否可以包含未在本Schema中定义的元素和属性,它主要用于其它Schema的引入,也就是其它“命名空间”的引入。缺省状态下,XML Schema的model取值open“。 张三 001 A公司 (010)62345678 (010)62345678 五街1234号 北京市 北京 100001 2002-8-1684XML基础及相关技术定义元素及其后代用S

59、chema定义元素及其内容nelement元素nngroup元素n2002-8-1685XML基础及相关技术定义元素及其后代DTD与Schema元素定义方式对照表表现内容DTDSchema合法实例空元素字符串abcdefg父元素一个子元素 有顺序的子元素 OR或 任意顺序(或不出现)的子元素 2002-8-1686XML基础及相关技术定义元素及其后代DTD与Schema元素定义方式对照表表现内容DTDSchema合法实例父元素可选子元素 “+”型重复元素 “*”型重复元素 成组元素 混合元素 abcdefg abcdefg abcdefg abcd efg 2002-8-1687XML基础及相

60、关技术定义元素及其后代用Schema定义元素属性nAttributeType元素n语法表达如下: ndt:type指定所声明属性的数据类型,它除了支持DTD中包含的全部十大数据类型外,还支持一些扩展属性.Schema中的十个基本属性与DTD中属性的对应关系表:Schema中基本类型DTD中基本类型string#PCDATAenumerationENUMERATEDidIDidrefIDREFidrefsIDREFSnmtokenNMTOKENnmtokensNMTOKENSentityENTITYEntitiesENTITIESnotationNOTATION2002-8-1688XML基础及

61、相关技术定义元素及其后代用Schema定义元素属性(cont.)属性类型DTD定义方法Schema定义方法合法实例必须赋值的属性属性值可有可无地属性属性属性定义缺省值的属性固定取值的属性属 性 分 类2002-8-1689XML基础及相关技术定义元素及其后代用Schema定义元素属性(cont.)nAttribute元素nAttributeType和attribute的关系与ElementType和element的关系相同,AttributeType只是起到声明属性的作用,而真正指明一个元素具有哪些属性还需依靠attribute元素。nattribute的语法表达如下: 2002-8-1690

62、XML基础及相关技术定义元素及其后代扩展数据类型 Schema中共有23种扩展数据类型,包括bin.base64、bin.hex、boolean、char、date、dateTime、dateTime.tz、fixed.14.4、float、int、number、time、time.tz、i1、i2、i4、r4、r8、ui1、ui2、ui4、uri、uuid,已经可以覆盖相当广泛的应用。限于篇幅,这里只列表介绍几种最常用的类型。类型解释举例Boolean布尔型:0 或 1, 其中0代表false,1代表true0,1Char单字符“a”、”b”Time时间类型,符合 ISO 8601格式, 无

63、日期和时区部分。08:15:13Date日期类型,符合ISO 8601格式且无时间部分2002-7-28dateTime日期类型,符合ISO 8601格式且无时间部分2000-06-01T20:08:18Fixed.14.4数值类型,同“number”类似,但精度上小数点前不超过14位,小数点后不超过4位14.1235Float实数类型,位数不受限制,可以包含符号位和小数位以及指数。取值范围从 1.7976931348623157E+308 至 2.2250738585072014E-308.314159265358979E+1int数值类型, 可以包含符号位,但不含小数位和指数位1, -10

64、, 2566number数值类型,位数不限,可以包含符号位和小数位以及指数。取值范围从 1.7976931348623157E+308 至 2.2250738585072014E-30812, 3.1415, -1.24E-10uri统一资源标识(URI)类型。http:/www.ics.uci.edu/pub/ietf/uri/2002-8-1691XML基础及相关技术定义元素及其后代扩展数据类型(cont.)n元素和属性的数据类型可以使用元素datatypedatatype来定义,这个元素是Schema中一个重要元素,也是Schema的一大特色。datatype的语法表达如下: n还有另一

65、种更直接的方法,是在元素ElementType和AttributeType之中利用dt:type属性。Datatypedt:typeElementType AttributeType 2002-8-1692XML基础及相关技术定义元素及其后代扩展数据类型(cont.)举例 ACER 518TE 22800 1 2580002002-8-1693XML基础及相关技术定义元素及其后代Schema中注释ndescription只能算是Schema中的一个配角,它可以嵌套在任何其它的Schema元素之中,为这些元素提供备注信息,类似于DTD中的注释。description中的信息不会被XML语法分析器

66、所解析,但是可以为我们提供注释信息,并可以被XML工具或应用程序所解读。n 出售自行车 2002-8-1694XML基础及相关技术Schema的应用n微软的BizTalkhttp:/www.biztalk.org/ nXml.org的Schema注册/资源库http:/www.xml.org/ 2002-8-1695XML基础及相关技术海纳百川,有容乃大DTD与SchemanDTD的定义nSchema的定义nXML命名空间命名空间2002-8-1696XML基础及相关技术XML命名空间n融众多元素命名于一体n命名冲突问题的解决n前缀标识法n如何声明命名空间n什么是合法名称n命名空间的使用n命名

67、空间作用于元素n命名空间作用于属性2002-8-1697XML基础及相关技术融众多元素命名于一体nXML较之HTML最根本的差别在于XML是定义置标语言的元语言,而HTML仅仅是由SGML元置标语言定义的一个实例语言。针对不同的应用方向,每设计一个XML的DTD,一种新的置标语言便随之诞生。在各种各样XML实例置标语言不断涌现的过程中,将会产生这样一种应用需求,即在一个XML文档中,包含由多个DTD描述的元素。这个想法显然是达到“物尽其用”的一个好办法,它帮助我们最大程度地利用了现有的资源,正所谓“海纳百川,有容乃大”。n如果不解决元素名称上的冲突问题,一个XML文档包含多个DTD中定义的元素

68、这一天才构想就不能实现。为了解决这个问题,W3C的XML小组制定了被称为命名空间(NameSpace)的标准。W3C组织于1998年2月提出命名空间标准的第一个草案,到1999年1月14日正式发布为推荐标准。2002-8-1698XML基础及相关技术融众多元素命名于一体(cont.)n联系人列表.dtdn企业经理.dtdn 张三 001 A公司 (010)62345678 五街1234号 北京市 北京 王五 (010)62345678 13601234567 2002-8-1699XML基础及相关技术命名冲突问题的解决前缀标识法n命名空间标准提供了一个很聪明的方法,就是所谓前缀标识法,即在元

69、素名和属性名前面增加一个标识,以唯一区分当前元素或属性来自哪一个DTD。n 张三 001 A公司 (010)62345678 五街1234号 北京市 北京 王五 (010)6234567813601234567 2002-8-16100XML基础及相关技术命名冲突问题的解决如何声明命名空间n直接定义方式nxmlnsxmlns: = = nn命名空间声明的属性值部分是一个URI引用,其功能是区分不同的命名空间,因此,这个URI引用被称为“命名空间名”,它应该具有唯一性和持久性。 n缺省定义方式nxmlnsxmlns = = n2002-8-16101XML基础及相关技术命名冲突问题的解决什么是

70、合法名称n合法名称的形式应该是: 前缀部分前缀部分: :本地部分本地部分n“前缀部分”和“本地部分”都要求是一个合法的XML名称。前缀部分必须是一个已经经过声明的命名空间前缀,语法分析器将把它与命名空间声明中的URI引用相联系;本地部分则是在DTD或Schema中定义的元素和属性名。n由于缺省方式声明的命名空间就是作用域内的缺省命名空间,因此,在这个作用域内使用该命名空间的元素、属性的合法名称无须再写前缀部分。2002-8-16102XML基础及相关技术命名空间的使用命名空间作用于元素n合法名称可以用于起始元素标记、结束元素标记和空元素标记。n合法名称中的前缀部分必须是一个已经声明过的命名空间

71、前缀,声明的位置,既可以在使用该前缀的起始元素的标记处,也可以是引用处的父辈元素标记处。n命名空间声明是作用到说明它的元素和该元素的所有子元素的,除非被其它命名空间声明所覆盖。n 张三 001 A公司 (010)62345678 五街1234号 北京市 北京 王五 (010)62345678 13601234567 2002-8-16103XML基础及相关技术命名空间的使用命名空间作用于元素(cont.)n缺省的命名空间是作用到声明它的元素和该元素的子元素的。当然,这里所说的元素都是那些没有命名空间前缀的元素,有了前缀的元素仍然遵照前缀所指示的命名空间。n 张三 001 A公司 (010)

72、62345678 五街1234号 北京市 北京 王五 (010)62345678 13601234567 2002-8-16104XML基础及相关技术命名空间的使用命名空间作用于元素(cont.)n需要注意的是,在一个缺省的命名空间声明中,URI引用可以是空,这在直接方式的命名空间声明中是不允许的。n当URI引用为空串时,在声明作用域范围内没有前缀的元素,被认为是不在任何命名空间作用域范围内的。n下面是一个合法的XML文件,直接上级元素的两个子元素不属于任何命名空间,因此,它们也不属于联系人列表所规定的命名空间,和前面的“姓名”和“电话”不是一回事。n 张三 001 A公司 (010)623

73、45678 五街1234号 北京市 北京 王五 (010)62345678 13601234567 2002-8-16105XML基础及相关技术命名空间的使用命名空间作用于属性n合法名称也可用于属性。除了XML预留的属性(如我们反复用到的声明命名空间的属性)外,其它属性都应该使用合法名称。n 李华 623487652002-8-16106XML基础及相关技术提 纲n山重水复疑无路,柳暗花明又一村XML的诞生n没有规矩,不成方圆XML语法n海纳百川,有容乃大DTD与Scheman花想衣裳云想容花想衣裳云想容XML文件的显示文件的显示n江山如画,一时多少豪杰XML标准体系框架n千帆竟发,百舸争流关

74、于XML的编辑与浏览工具n问苍茫大地,谁主沉浮XML的应用和发展前景2002-8-16107XML基础及相关技术花想衣裳云想容XML文件的显示n什么是样式单nXSL样式单nXSL概述n一个XSLT的简单例子n节点匹配路径XPATHnXSLT句法与函数nXSL与CSS两种样式单的比较2002-8-16108XML基础及相关技术什么是样式单n样式单(Style Sheet)是一种专门描述结构文档表现方式的文档。与HTML描述数据显示方式的传统方法相比,样式单有许多突出的优点: n表达效果丰富n文档体积小n便于信息检索n可读性好nXML关于文档浏览的基本思想是将数据与数据的显示分别定义。n定义不同的

75、样式表可以使相同的数据呈现出不同的显示外观,从而适合于不同应用,甚至能够在不同的显示设备上显示。这样,XML数据就可以得到最大程度上的重用性,满足不同的应用需求。 n迄今为止,W3C已经给出了两种样式单语言的推荐标准n层叠样式单CSS(Cascading Style Sheets)n可扩展样式单语言XSL(eXtensible Stylesheet Language)。2002-8-16109XML基础及相关技术XSL样式单XSL概述n由W3C制定的。 XSL这个样式语言自提出以来争议颇多,前后经过了几番大的修改。XSL最近的一个草案于2000年3月提出,仍然有待进一步修改完善,因此还不能作为

76、正式依据。nXSL通过XML进行定义的,遵守XML的语法规则,是XML的一种具体应用。nXSL由两大部分组成:第一部分描述了如何将一个XML文档进行转换,转换为可浏览或可输出的格式;第二部分则定义了格式对象FO(fomatted object)。n在输出时,首先根据XML文档构造源树,然后根据给定的XSL将这个源树转换为可以显示的结果树,这个过程称作树转换,最后再按照FO解释结果树,产生一个可以在屏幕上、纸上、语音设备或其它媒体中输出的结果,这个过程称作格式化。n到目前为止,W3C还未能出台一个得到多方认可的FO,但是描述树转换的这一部分协议却日趋成熟,已从XSL中分离出来,另取名为XSLT(

77、XSL Transformations),其正式推荐标准于1999年11月16日问世,现在一般所说的XSL大都指的是XSLT。与XSLT一同推出的还有其配套标准XPath,这个标准用来描述如何识别、选择、匹配XML文档中的各个构成元件,包括元素、属性、文字内容等。2002-8-16110XML基础及相关技术XSL样式单XSL概述(cont.)n使用XSL定义XML文档显示方式的基本思想是:通过定义转换模板,将XML源文档转换为带样式信息的可浏览文档。最终的可浏览文档可以是HTML格式、FO格式、或者其它面向显示方式描述的XML格式(如前面提到的SVG和SMIL),限于目前浏览器的支持能力,大多

78、数情况下是转换为一个HTML文档进行显示。n在XML中声明XSL样式单的方法 n具体的转换过程有两种模式n服务器端转换模式:n动态方式;即当服务器接到转换请求时再进行实时转换,这种方式无疑对服务器要求较高。n批量方式;实现将XML用XSL转换好一批HTML文件,接到请求后调用转换好的HTML文件即可。n客户端转换模式:将XML和XSL文件都传送到客户端,由浏览器实时转换。前提是浏览器必须支持XML+XSL。 2002-8-16111XML基础及相关技术XSL样式单主要语句主要语句含义xsl:stylesheet声明语句xsl:template相当于编程中函数的概念xsl:template ma

79、tch=“”相当于函数调用,去匹配引号中指定的节点xsl:apply-templates应用模板函数xsl:apply-templates select =应用模板函数的调用,跳转到引号中指定的模板xsl:for-each select = 循环语句,遍历与引号中的属性值相同的节点xsl:value-of select = 赋值语句,取出引号中指定的属性值2002-8-16112XML基础及相关技术XSL样式单一个XSLT的简单例子nMystyle.xsl: 学生花名册 .titlefont-size:15pt; font-weight:bold; color:blue .namecolor:

80、red 学生花名册 姓名 籍贯 年龄 电话 2002-8-16113XML基础及相关技术XSL样式单一个XSLT的简单例子(cont.) 2002-8-16114XML基础及相关技术XSL样式单节点匹配路径XPathn在XSL中引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素。nXPATH数据类型nXPATH节点类型n节点匹配基本方法n路径匹配n位置匹配n属性及属性值匹配n亲属关系匹配n条件匹配2002-8-16115XML基础及相关技术节点匹配路径XPath数据类型n节点集(nodeset)n节点集是通过路径匹配返回的符合条件的一组节点的集合。其它类型的

81、数据不能转换为节点集。 n布尔值(boolean)n由函数或布尔表达式返回的条件匹配值,与一般语言中的布尔值相同,有true和false两个值。布尔值可以和数值类型、字符串类型相互转换。 n字符串(string)n字符串即包含一系列字符的集合,XPath中提供了一系列的字符串函数。字符串可与数值类型、布尔值类型的数据相互转换。 n数值(number)n在XPath中数值为浮点数,可以是双精度64位浮点数。另外包括一些数值的特殊描述,如非数值NaN(Not-a-Number)、正无穷大infinity、负无穷大-infinity、正负0等等。number的整数值可以通过函数取得,另外,数值也可以

82、和布尔类型、字符串类型相互转换。 2002-8-16116XML基础及相关技术节点匹配路径XPathXPath节点类型n根节点(RootNode)n元素节点(ElementNodes)n文本节点(TextNodes)n属性节点(AttributeNodes)n命名空间节点(NamespaceNodes)n处理指令节点(ProcessingInstructionNodes)n注释节点(CommentNodes)2002-8-16117XML基础及相关技术节点匹配路径XPath节点匹配基本方法n路径匹配符号含义举例匹配结果/指示节点路径/A/C/D节点A的子节点C的子节点D,即id值为d2的D节点

83、/根节点/所有路径以“/”后指定的子路径结尾的元素/E所有E元素,结果是所有三个E元素/C/E所有父节点为C的E元素,结果是id值为e1和e2的两个E元素*路径的通配符/A/B/C/*A元素B元素C元素下的所有子元素,即name值为b的B元素、id值为d1的D元素和id值为e1和e2的两个E元素/*/*/D上面有两级节点的D元素,匹配结果是id值为d2的D元素/*所有的元素|逻辑或/B|/C所有B元素和C元素 2002-8-16118XML基础及相关技术节点匹配路径XPath节点匹配基本方法n位置匹配 举例含义匹配结果/A/B/C1A元素B元素C元素的第一个子元素name值为b的B元素/A/B

84、/Clast()A元素B元素C元素的最后一个子元素id值为e2的E元素/A/B/Cposition()1A元素B元素C元素之下的位置号大于1的元素id值为d1的D元素和两个具有id值的E元素2002-8-16119XML基础及相关技术节点匹配路径XPath节点匹配基本方法n属性及属性值匹配n元素的属性名前要有元素的属性名前要有前缀。前缀。 举例含义匹配结果/Bid所有具有属性id的B元素id值为b1和b2的两个B元素/B*所有具有属性的B元素两个具有id属性的B元素和一个具有name属性B元素/Bnot(*)所有不具有属性的B元素A元素C元素下的B元素/Bid=b1id值为b1的B元素A元素下

85、的B元素2002-8-16120XML基础及相关技术节点匹配路径XPath节点匹配基本方法n亲属关系匹配 举例含义匹配结果/E/parent:*所有E节点的父节点元素id值为a1的A元素和id值为c1的C元素/F/ancestor:*所有F元素的祖先节点元素id值为a1的A元素和id值为c2的C元素/A/child:*A的子元素id值为b1、b2的B元素,id值为c2的C元素,以及没有任何属性的E元素/A/descendant:*A的所有后代元素除A元素以外的所有其它元素/F/self:*所有F的自身元素F元素本身/F/ancestor-or-self:*所有F元素及它的祖先节点元素F元素、F

86、元素的父节点C元素和A元素/A/C/descendant-or-self:*所有A元素C元素及它们的后代元素id值为c2的C元素、该元素的子元素B、D、F元素2002-8-16121XML基础及相关技术节点匹配路径XPath节点匹配基本方法n亲属关系匹配(cont.) 举例含义匹配结果/A/C/following-sibling:*A元素C元素的紧邻的后序所有兄弟节点元素没有任何属性的E元素/A/C/preceding-sibling:*A元素C元素的紧邻的前面所有兄弟节点元素id值为b1和b2的两个B元素/A/B/C/following:*A元素B元素C元素的后序的所有元素id为b2的B元素

87、、无属性的C元素、无属性的B元素、id为d2的D元素、无属性的F元素、无属性的E元素。/A/C/preceding:*A元素C元素的前面的所有元素id为b2的B元素、id为e2的E元素、id为e1的E元素、id为d1的D元素、name为b的B元素、id为c1的C元素、id为b1的B元素2002-8-16122XML基础及相关技术节点匹配路径XPath节点匹配基本方法n条件匹配n条件匹配就是利用一些函数的运算结果的布尔值来匹配符合条件的节点。常用于条件匹配的函数有四大类:节点函数、字符串函数、数值函数、布尔函数。例如前面提到的last()、position()等等n以上这些匹配方法中,用得最多的

88、还要数路径匹配。2002-8-16123XML基础及相关技术XSL样式单XSLT句法与函数n文档结构n模板及应用n计算节点值n循环处理n排序n元素与属性创建n节点拷贝n输出格式与编码问题2002-8-16124XML基础及相关技术XSL样式单主要语句主要语句含义xsl:stylesheet声明语句xsl:template相当于编程中函数的概念xsl:template match=“”相当于函数调用,去匹配引号中指定的节点xsl:apply-templates应用模板函数xsl:apply-templates select =应用模板函数的调用,跳转到引号中指定的模板xsl:for-each s

89、elect = 循环语句,遍历与引号中的属性值相同的节点xsl:value-of select = 赋值语句,取出引号中指定的属性值2002-8-16125XML基础及相关技术XSLT句法与函数文档结构nXSLT文档本身是XML文档,因此文档的第一句自然是:n n nxsl:transform与xsl:stylesheet具有相同的含义,都表示元素所包含的内容为样式单。xsl:stylesheet元素必须包含有version属性,用以指示该XSL文档遵从哪一个版本的XSL标准。2002-8-16126XML基础及相关技术XSLT句法与函数模板及应用nxsl:template元素有一个mode属

90、性,可以根据需要去匹配不同模式的模板。n 学生花名册 .titlefont-size:15pt; font-weight:bold; color:blue 学生花名册 .titlefont-size:15pt; font-weight:bold; color:red n如果要将TITLE输出为蓝色,则用下面语句匹配: n如果要将title输出为红色,则写为: 2002-8-16127XML基础及相关技术XSLT句法与函数计算节点值与循环处理n计算节点值n在使用XSLT进行转换时,常常需要获取节点值,使用xsl:value-of元素可达到这个目的nn循环处理n使用xsl:for-each可对所选

91、节点依次进行处理n 2002-8-16128XML基础及相关技术XSLT句法与函数排序还有一种指定排序的方法,就是在前面学生花名册例中所使用的order-by: 排序排序方式举例含义按大小写排序以id为关键字按大写优先排序以id为关键字按小写优先排序按字母顺序排序以id为关键字按字母升序排序以id为关键字按字母降序排序按数据类型排序以id为关键字按文本类型排序,如对于一组id数据101,2,44,305来说,排序结果是101,2,305,44以id为关键字按数据类型排序,上面一组数据的排序结果是2,44,101,3052002-8-16129XML基础及相关技术XSLT句法与函数元素与属性创建

92、nXSLT是一个动态的样式单,在处理过程中可产生新的元素或元素属性,方法如下:内容元素举例转换结果创建元素xsl:element学生花名册学生花名册创建属性Xsl:attributecolor:blue 学生花名册学生花名册创建文本xsl:text(可以保护文本中的空白字符) 这是学生花名册 输出文字:这是学生花名册创建处理指令xsl:processing-instructionhref=book.csstype=text/css创建注释Xsl:comment以下是学生花名册,请勿删改!2002-8-16130XML基础及相关技术XSLT句法与函数节点拷贝n在对XML文档进行处理时,XSLT还

93、可以通过拷贝的方式复制节点,方法是利用xsl:copy和xsl:copy-of。其中xsl:copy只拷贝当前节点,不包括子节点和属性;而xsl:copy-of的拷贝内容则包括当前节点、子节点和属性。n例如对于: A is a char n转换后生成如下代码: copy-of : A is a char copy : n copy-of : copy : 2002-8-16131XML基础及相关技术XSLT句法与函数输出格式与编码问题nXSLT是一个转换语言,它的目的是将XML源文档转换为另一种格式文档,它的输出结果可以是HTML文档,也可以是带CSS的XML文档。具体的输出格式由xsl:ou

94、tput 指定。n如果要输出为HTML文档,则写为: n同样,要输出XML文档写为: n可以利用xsl:output指定编码方式,如UTF-8,UTF-16,GB2312等。例如: 2002-8-16132XML基础及相关技术XSL与CSS两种样式单的比较nCSS和XSL的区别n用途不同nCSS最早是针对于HTML提出的,后来又将其应用于XML之中nXSL是专门针对XML提出的,它不能处理HTML文档。但它有一个CSS无法达到的功能,即用一个命令行将一个XML文档转换为另一个文档并存盘。n处理结果不同nXSL采用的是一种转换的思想,它将一种不含显示信息的XML文档转换为另一种可以用某种浏览器浏

95、览的文档,转换后的输出码或者存为一个新的文档,或者暂存于内存中,但都不修改源代码。nCSS则没有任何转换动作,只是针对结构文档中的各个成分,依照样式规定一一设定外观式样,再由浏览器依据这些式样显示文档,在整个过程中没有任何新码产生。n表现能力不同n在XSL中定义的90%的样式规定,实际上在CSS中都有定义。但仍然有一些效果是CSS无法描述的。如:根据文本内容决定显示方式;将文档中的成分按照某一个子成分的值进行排序等。n语法不同nXSL是根据XML的语法进行定义的,实际上又是XML的一种应用。而CSS的语法自成体系,且比较简单,易学易用。2002-8-16133XML基础及相关技术XSL与CSS

96、两种样式单的比较(cont.)n一个XML文档的显示方式可以归纳为三种:即利用CSS显示,利用XSL转化为FO显示,以及利用XSL转化为HTML文档显示(这个HTML文档中可包含CSS样式)。2002-8-16134XML基础及相关技术提 纲n山重水复疑无路,柳暗花明又一村XML的诞生n没有规矩,不成方圆XML语法n海纳百川,有容乃大DTD与Scheman花想衣裳云想容XML文件的显示n江山如画,一时多少豪杰江山如画,一时多少豪杰 XML标准体系框架标准体系框架n千帆竟发,百舸争流关于XML的编辑与浏览工具n问苍茫大地,谁主沉浮XML的应用和发展前景2002-8-16135XML基础及相关技术

97、江山如画,一时多少豪杰XML标准体系框架元元语言标准语言标准基基础础标标准准应应用用标标准准2002-8-16136XML基础及相关技术江山如画,一时多少豪杰XML基础标准及其相互关系 WebWeb应用的应用的基础标准基础标准2002-8-16137XML基础及相关技术江山如画,一时多少豪杰XML基础标准n上图中上部的一组标准仅次于XML标准本身,居于核心地位,并且几乎被其他所有XML相关标准采用.nXML BaseXML Base:用于定义XML文档中URI的基础部分的标准。nXML Inclusions (XML Inclusions (XIncludeXInclude) ):用于规定文档

98、中包含物的处理模型与语法规则nCanonical XMLCanonical XML:目前还只是一个工作草案,它描述了一种对输入的XML文档生成范式的方法,这个范式不会因为文档采用的句法形式的改变而改变。nNamespaces in XMLNamespaces in XMLn右侧的四个标准为XML文档的处理提供了有效的方法与规则。nSchemaSchemanDOMDOM:定义了一组与平台和语言无关的接口,以便程序和脚本能够动态访问和修改XML文档内容、结构及样式。 nXQueryXQuery:这是一个正处于工作草案阶段的标准,其目的是为从WEB中实际的或虚拟的文档中提取数据,提供一种灵活的查询机

99、制。它为XML文档提供了一个数据模型、一组基于这个模型的查询操作以及在这些操作基础上的查询语言。nXFormsXForms:这也是一个工作草案阶段的标准,是从HTML的表单中发展抽象而来的。其关键思想是将用户界面和表现与数据模型和逻辑分开,以便同一个表单可被广泛地应用于手持设备、桌面设备或基于语音的浏览器等各种情况。2002-8-16138XML基础及相关技术江山如画,一时多少豪杰XML基础标准(cont.)n包含XSL的那一组标准其实在HTML标准中已有其雏形:显示与链接n一组描述显示的标准(一组描述显示的标准(CSSCSS、XSLXSL、XSLTXSLT)nXPathXPathnXPoin

100、terXPointer和和XLinkXLink:它们继承了HyTime标准中有关定位、链接方面的内容,链接采用单独的元素形式,并在标准中定义了元元素,以便作为模板或父元素类型,链接可以有多种形式等。n采用XML定义的几个Internet应用的基础标准。 nRDF (Resource Description Format)RDF (Resource Description Format):是采用XML语法格式处理元数据的应用,为描述图像、文档和它们之间的相互关系定义了一个简单数据模型。nPICS (The Platform for Internet Content Selection)PICS

101、(The Platform for Internet Content Selection):可以说是RDF的一个应用,它提供了一种标注Internet内容的方法。nP3P (Platform for Privacy Preferences)P3P (Platform for Privacy Preferences):这是采用XML提供的一种进行隐私策略的描述格式,以便保护Internet使用者的个人隐私信息或其他保密信息不会未经允许而被站点或他人获取。nXML SignaturesXML Signatures:提供了一种对XML文档进行数字签名的方法。2002-8-16139XML基础及相关技

102、术江山如画,一时多少豪杰XML应用标准n用于XML显示的标准:nXHTML(采用XML对HTML的重新定义)nSVG(有关矢量图形的)nSMIL(有关多媒体同步显示的)nMathML(有关数学公式符号的);n用于移动设备的标准:nCC/PP(移动设备的内容协商与信息交换)nHDML(手持设备)nWAP(无线应用设备)nVoiceXML(通过语音进行WEB访问);n用于电子商务领域的标准:nMicropayments(W3C制定的)nBizTalk(Microsoft发起的电子商务的schema库)nebXML(联合国UN/CEFACT小组和OASIS共同发起的)nPIP(由诸多IT业的巨子组成

103、的一个标准化组织RosettaNet的应用网络标准。)ncXML、xCBL、tpaML等等;n其他领域的标准:nTV/WEB(WEB电视)nOEB(电子图书)nWAI(方便残障人进行WEB访问)。2002-8-16140XML基础及相关技术提 纲n山重水复疑无路,柳暗花明又一村XML的诞生n没有规矩,不成方圆XML语法n海纳百川,有容乃大DTD与Scheman花想衣裳云想容XML文件的显示n江山如画,一时多少豪杰XML标准体系框架n千帆竟发,百舸争流千帆竟发,百舸争流 关于关于XML的的编辑与浏览工具编辑与浏览工具n问苍茫大地,谁主沉浮XML的应用和发展前景2002-8-16141XML基础及

104、相关技术千帆竟发,百舸争流关于XML的编辑与浏览工具 由于XML编辑浏览工具尚不完善,给XML的流行造成了很大的障碍。的确,迄今为止,无论是分析、编辑、还是浏览工具,市场上都没有哪个产品已经可以独霸一方,这给XML的开发者和使用者都造成了很大程度上的不便。nXML分析工具nXML浏览工具nXML编辑工具2002-8-16142XML基础及相关技术XML分析工具n分为两类n支持有效性检查的分析器n不支持有效性检查的分析器nIBMXML4Jn完全是用JAVA开发的,它是目前功能比较全面的支持有效性检查的XML分析器n具有如下特征: n遵守XML1.0标准 n遵守最近的DOM、SAX、命名空间的标准

105、 n提供多语种支持 n提供源代码、示例和文档 n支持XML的有效性检查 n可高效支持元素识别、DOM创建、错误处理等 n有关该分析器的详细介绍请参考网页:http:/ http:/xml.apache.org/xerces-j/index.html nOracle的XMLParserhttp:/ n。2002-8-16144XML基础及相关技术XML浏览工具nIE对XML的支持nIE5,IE5.5,IE6nMozilla对XML的支持n在Netscape Communicator 5.0的一个较早版本的源代码的基础上开发而成的,2002-8-16145XML基础及相关技术XML编辑工具nXML

106、Spyhttp:/ n支持Unicode、多字符集,支持Well-formed和Validated两种类型的XML文档,并可编辑XML文档、DTD、schema,以及XSLT。n提供了四种视窗:XML结构视窗、增强表格视窗、源代码视窗和支持CSS和XSL的预览视窗。nXML Spy可支持如下几类schema的编辑与有效性检查: nDocument Type Definitions (DTD) nDocument Content Descriptions (DCD) nXML-Data Reduced (XDR) nBizTalk nXML Schema Definition (XSD) 200

107、0年4月7日草案 nXML Spy也提供集成开发环境IDE2002-8-16146XML基础及相关技术提 纲n山重水复疑无路,柳暗花明又一村XML的诞生n没有规矩,不成方圆XML语法n海纳百川,有容乃大DTD与Scheman花想衣裳云想容XML文件的显示n江山如画,一时多少豪杰XML标准体系框架n千帆竟发,百舸争流关于XML的编辑与浏览工具n问苍茫大地,谁主沉浮问苍茫大地,谁主沉浮 XML的应用和发展前景的应用和发展前景2002-8-16147XML基础及相关技术问苍茫大地,谁主沉浮XML的应用和发展前景nXML应用概述nXML应用实例资源描述框架RDFnXML发展前景2002-8-16148

108、XML基础及相关技术XML应用概述n设计置标语言n作为元置标语言,XML为用户提供了定义本行业本领域的置标语言的最好工具。n例如化学领域的CML,数学领域的MathML,移动通信领域的WML等。 nWeb应用n集成不同数据源n本地计算n数据的多种显示n网络出版n支持Web应用的互操作和集成2002-8-16149XML基础及相关技术XML应用概述(cont.)n文件保值nXML良好的保值性和自描述性使它成为保存历史档案,如政府文件、公文、科学研究报告等的最佳选择。 n数据交换n数据交换的核心问题是信息的标准化,主要解决信息的可理解性问题,包括人和机器对信息的理解。而且,更重要的是机器对信息的识

109、别,并能根据数据进行自动处理。XML的出现,为信息的标准化提供了有力的工具。n由于不同的应用领域对数据的要求千差万别,因此要想制订一个放之四海而皆准的数据交换标准是不现实的,同时也是不必要的。最典型的作法是在同一应用领域制订一个标准,参与者按照这个标准组织数据,就可以进行数据交换。比如,Microsoft和Marimba合作提出的开放软件描述(Open Software Description,简写为OSD)是用于描述软件的一个XML标准。nXML为电子商务带来了新的机遇和活力:替代传统的EDI;智能代理2002-8-16150XML基础及相关技术XML的应用实例资源描述框架RDFn对资源的描

110、述是领域和应用相关的,对不同资源的描述需要采取不同的词汇表。因此RDF规范并没有定义描述资源所用的词汇表,而是定义了一些规则,这些规则是各领域和应用定义用于描述资源的词汇表时必须遵循的。当然,RDF也提供了描述资源时具有基础性的词汇表。n一个RDF文件包含多个资源描述,而一个资源描述是由多个语句构成,一个语句是由资源、属性类型、属性值构成的三元体,表示资源具有的一个属性。n参考W3C定义的RDF规范http:/www.w3.org/TR/rdf-schema和http:/www.w3.org/TR/REC-rdf-syntax.n World Wid Web Consortium W3C XM

111、L Resource OASIS GROUP XML.org XML.commune XML.com 2002-8-16151XML基础及相关技术XML应用前景nXML自推出以来,尤其是在1998年2月成为W3C推荐标准以来,受到了广泛的支持。nXML还有很长的路要走nXML的规则只是迈出了第一步,还有许多技术细节没有解决。n现在虽然出现了一些XML工具和应用,但是其市场反应还有待进一步观察。n如何让更多的人迅速学会使用XML,并利用它进行开发,进而促进XML的应用也是一个问题。nXML是用于定义语言的元语言,任何个人、公司和组织都可以利用它来定义自己的置标语言,它们之间的通信就会出现困难。因

112、此在一些领域先后出现了一些标准化组织,它们的任务就是规范本领域的置标语言,形成统一的标准,使得在本领域内的通信成为可能。但在标准推出并得到广泛认可之前,各自为政的局面将继续下去。更糟糕的是,由于对应用的理解不一致和商业利益等原因,同一个领域也许还有多个标准化组织,它们形成的置标语言并不完全兼容,使得采取不同标准的计算机仍然难以通信。2002-8-16152XML基础及相关技术XML应用前景(cont.) 由于HTML的易学易用和非常多的工具支持,HTML将在较长的时间里继续在Web舞台上充当主角。 无论如何,XML的出现使互联网跨入了一个新的阶段,它将成为因特网领域中一个重要的开发平台。XML的诞生已经而且将继续促使全新种类的应用程序的产生,而这些新的应用程序又将需要新的软件和硬件工具。2002-8-16153XML基础及相关技术Thank you!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号