XML的基本知识点


XML的学习目标:
    能用XML描述现实中的有层次关系的数据
    能使用程序读取到XML中表示的数据(解析Parser)


一、XML是什么?作用是什么?
    1、XML是指可扩展标记语言(eXtensible Markup Language),用户自定义的标签.相对于HTML来讲的。
    2、XML被设计的宗旨是表示数据。HTML是用来显示数据的。目前经常使用的XML版本是1.0
    3、XML除了表示数据外。在实际的企业开发中,主要用XML作为程序的配置文件。


二、XML的基本语法(组成)
    1、文档声明:
              作用:用于标识该文档是一个XML文档。
              注意事项:声明必须出现在文档的第一行(之前连空行/空格都不能有,也不能有任何的注释)


              最简单的XML声明:<?xml version="1.0"?>
              声明中的encoding属性:说明解析当前XML文档时所使用的编码。默认是UTF-8
              声明中的standalone属性:说明XML文档是否是独立而不依赖其他文档。(了解)




    2、元素:
              XML中出现的标签,分为包含标签主体和不包含标签主体,如:<p>哈哈</p>   <h/>
              一个标签可以嵌套若干标签,但是不允许交叉嵌套,必须合理嵌套
              结束标签不能省略
              一个XML文档必须且只能有一个根标签,其他标签都是该标签的子标签或孙标签
              XML文档中不会忽略回车和换行及空格
              标签的命名规范:元素(标签)的名称只能以字母或下划线开头,
                       可以包含字母、数字、减号、下划线和英文句点。严格区分大小写。


    3、元素的属性
              元素的属性取值一定要用引号引起来(单引号或双引号)
              标签属性所代表的信息也可以被改成用子元素的形式来描述,方便细度编程        


    4、注释
              与HTML中的注释完全一致:<!--这是注释-->

              注释不能嵌套


    5、CDATA区
              CDATA是Character Data的缩写。
              作用:CDATA区中的东东都是文本。
              语法:
                    <![CDATA[
                      文本内容
                    ]]>
          
    6、特殊字符
              & &amp;
              < &lt;   (less than)
              > &gt:(great than)
              " &quot;
              ' &apos;


    7、处理指令(PI:Processing Instruction)
            处理指令,简称PI(Processing Instruction)。
            作用:用来指挥软件如何解析XML文档。
            语法:必须以“<?”作为开头,以“?>”作为结尾。
            xml-stylesheet指令:  指示xml文档所使用的CSS样式或XSL, 注: 对中文命名的标签元素不起作用
                    如:  <?xml-stylesheet type="text/css" href="a.css"?>


三、XML的约束
            1、格式良好的XML文档:符合XML语法的。
            2、有效的XML文档:遵循约束规范的。
              格式良好的不一定是有效的,但有效的必定格式良好。
            3、常用的约束技术: XML DTD  和  XML Schema




四、DTD的基本语法(看懂即可)
            1、DTD:Document Type Definition
            2、作用:约束XML的书写规范。
            3、DTD文件保存到磁盘时,必须使用UTF-8编码


            4、如何引入外部的DTD文档来约束当前的XML文档
              DTD文件在本地:<!DOCTYPE 根元素名称 SYSTEM "DTD文件的路径">
                如:  <!DOCTYPE 书架 SYSTEM "book.dtd">
              DTD文件在网络上:<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD的路径URL">
                如:  <!DOCTYPE web-app PUBLIC
                        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
                        "http://java.sun.com/dtd/web-app_2_3.dtd">


五、DTD的语法细节
            5.1定义元素
                    语法:<!ELEMENT 元素名称 使用规则>
                    使用规则:
                            (#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data)
                            EMPTY:指示元素的不能有主体内容。
                            ANY:用于指示元素的主体内容为任意类型
                            (子元素):指示元素中包含的子元素
                                  如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档
                                  如果子元素用“|”分开,说明任选其一。
                                  用+(>=1)、*(>=0)、?(0/1)来表示元素出现的次数,如果都没有,则只能且必须出现一次
                  
            5.2定义元素的属性(attribute)
                        语法:
                            <!ATTLIST 哪个元素的属性
                                      属性名1 属性值类型 设置说明
                                      属性名2 属性值类型 设置说明>
                              
                              属性值类型:
                                      CDATA:说明该属性的取值为一个普通文本
                                      ENUMERATED (DTD没有此关键字):
                                        语法:<!ATTLIST 元素名称 (值1|值2) "值1">
                                      ID:属性的取值不能重复
                              设置说明:
                                      #REQUIRED:表示该属性必须出现
                                      #IMPLIED:属性可有可无
                                      #FIXED:表示属性的取值为一个固定值 语法:#FIXED "固定值"
                                      直接值:表示属性的取值为该默认值
            5.3定义实体(了解)
                    关键字ENTITY
                          实体的定义分为引用实体和参数实体
                    
                    引用实体:
                          作用:在DTD中定义,在XML中使用
                          语法:<!ENTITY 实体名称 "实体内容">
                          在XML中使用:&实体名称;
                          例:
                              <!ENTITY copyright "你好啊">
                              &copyright;
                          
                    参数实体:
                          作用:在DTD中定义,在DTD中使用
                          语法:<!ENTITY % 实体名称 "实体内容">
                          在DTD中使用:%实体名称;
                          例:
                                <!ENTITY %  TAG_NAMES "姓名|EMAL|电话|地址">
                                <!ELEMENT  个人信息 (%TAG_NAMES;|生日)>


              例子:  book.dtd文件
                
                      <!ELEMENT 书架 (书+)>
                              <!ELEMENT 书 (书名,作者,售价)>
                              <!ELEMENT 书名 (#PCDATA)>
                              <!ELEMENT 作者 (#PCDATA)>
                              <!ELEMENT 售价 (#PCDATA)>
                              <!ATTLIST 书
                                        ISBN ID #REQUIRED
                                        出版社 (上海传智|北京传智) "上海传智">
                              <!ENTITY wzt "王昭珽">


                根据book.dtd约束规范写出的book.xml文档


                        <?xml version="1.0" encoding="GBK"?>
                        <!DOCTYPE 书架 SYSTEM "book.dtd">
                        <书架>
                                <书 ISBN="a" 出版社="北京传智">
                                        <书名>Java就业培训教程</书名>
                                        <作者>&wzt;</作者>
                                        <售价>39.00元</售价>
                                </书>
                                <书 ISBN="b">
                                        <书名>JavaScript网页开发</书名>
                                        <作者>&wzt;</作者>
                                        <售价>28.00元</售价>
                                </书>
                        </书架>


六、根据DTD能否对XML文档进行约束模式校验,可以将解析器分为俩类:
                  非校验解析器: 如IE
                  校验解析器: 创建一个html文本,拷贝如下代码,并导入要校验的xml文档即可
                        代码如下:
                                <script type="text/javascript">
                                        // 创建XML文档解析器对象
                                        var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
                                        // 开启XML校验
                                        xmldoc.validateOnParse="true";
                                        // 装载要检验的XML文档
                                        xmldoc.load("instance1.xml");
                                        // 获取错误信息
                                        var reson = xmldoc.parseError.reason;
                                        // 获取错误的行号
                                        var line = xmldoc.parseError.line;
                                        document.write(reson+"<br/>");
                                        document.write(line);
                                </script>

七、XML解析方式概述
              1、常用XML的解析方式:DOM和SAX
                            DOM:Document Object Model是W3C推荐使用的解析方式
                            SAX:Simple API for XML。非官方标准。
              2、常用解析开发包:
                            JAXP:SUN推出的实现,能进行DOM和SAX方式解析
                            Dom4J
                            JDom等


八、XML的编码问题









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值