XML(day05)

1. 表单提交方式(★★★)

        *  使用submit提交
        <form>
                //  提交按钮
                <input  type = "submit"/>
        </form>

        *  使用button提交表单
                - 代码
                //  实现提交方法
                function  form1()  {
                        //  获取form
                        var  f1 = document.getElementById("f1");
                        f1.action  =  "hello.html";    //  接收数据地址
                        //  提交form表单
                        f1.submit();
                } 

        *  使用超链接提交
                - 代码
                <a  href = "hello.html?user=123456">    使用超链接提交 </a>

        * onclick:鼠标点击事件
           onchange:改变内容(一般和select一起使用)

           onfocus:表示得到焦点        (存在兼容性问题)
           onblur:表示失去焦点

1)xml的简介

    eXtensible    Markup    Language:可扩展标记型语言

        标记语言:html是标记型语言
                - 也是使用标签来操作的

        可扩展:
                - html里面的标签是固定的,每个标签都有特定的含义<h1>  <br>等
                - 标签可以自己定义,可以写中文的标签<猫></猫>...

        xml用途:
                html是用于显示数据,xml也可以显示数据,但xml主要功能是,为了存储数据。

    【xml是w3c组织发布的技术】

2)xml的应用

        I. 不同的系统之间传输数据
                qq之间数据的传输

画图解析传输过程

        II. 用来表示生活中有关系的数据

        III. 经常用在配置文件
                *  比如现在连接数据库,需要知道数据库的用户名和密码以及名称
                *  如果我们要修改数据库的有关信息,不需要修改源代码,只需要修改配置文件

4)xml的语法

    xml的文档声明
        *  创建一个文件,后缀名是.xml
        *  如果写xml,第一步必须要有一个文档声明(写了文档声明之后,表示写了xml文件的内容)
        *  <?xml version="1.0" encoding="UTF-8"?>
        **  文档声明必须写在第一行第一列

        *  属性:
                - version:xml版本    1.0
                - encoding:xml编码    GBK    UTF-8 ....
                - standalone:是否需要依赖其他文件 yes/no

        *  xml的中文乱码问题解决(★★)
                设置的编码和保存时候的编码一致,就不会出现乱码

5)xml的元素定义

        标签定义

            标签的定义有开始符必须要有结束符<person>    </person>
            如果标签没有内容,可以在标签内结束:<aa/>
            标签可以嵌套,但是必须合理
                    合理嵌套 <aa><bb></bb></aa>
                    不合理嵌套 <aa><bb></aa></bb>
            一个xml中,只能有一个根标签,其他标签都是这个标签下面的标签

            在xml中会把空格和换行都当成内容解析

            xml标签可以是中文

        xml中标签的名称规则
                I. xml代码严格区分大小写    <p>    <P>  这两个标签是不一样的
                II.  xml的标签不能以数字和"_"开头
                III. 不能以 xml 或 XML 或 Xml 这些来开头
                IV.  不能包含空格和冒号

6)xml中属性的定义

        html是标记型文档,可以有属性;xml也是标记型文档,可以有属性。

        <person  id = "p1"> </person>

        属性定义的要求
                I. 一个标签上可以有多个属性
                        <person id= "p1" name="pp"></person>
                II. 属性名称不能相同
                III. 格式必须是 属性名 = "属性值"/'属性值"
                IV. xml属性的名称规范和元素名称规范一致

7)xml中的注释

        写法:<!-- 注释内容 -->

        注意:注释不能嵌套使用

8)xml中的特殊字符

        如果想要在xml中显示 a<b; 因为 < 被默认为标签的组成部分,所以无法正常显示。

        这时候需要对这类特殊字符进行转义

9)CDATA区

        可以解决多个字符都要转义的操作 例如 if(a<b && b<c && d>f){}
        把这些内容放到CDATA区里面,就不需要转义了

        写法:<![CDATA [内容 ] ]>

        把特殊字符,当做文本内容,而不是标签

10)PI指令

        可以在xml中设置样式

        格式:<?xml-stylesheet type="text/css" href="scc文件的路径"?>

css文件内容

        设置样式,只能对英文标签名称起作用,对中文不起作用

        xml的语法的总结:
                I. 所有 XML 元素都必须有关闭标签
                II. XML 标签对大小写严格要求
                III. XML 必须正确地嵌套顺序
                IV. XML 文档必须有根元素(只有一个)
                V. XML 的属性值须加引号
                VI. 特殊字符必须转义 ---- CDATA
                VII. XML 中的空格、回车换行会解析时被保留

11)XML的约束

        为什么要进行约束?由于xml的标签是自定义的,因此为了保证在文件存储信息的合理化,需要技术来对xml的元素进行约束。

        xml的约束的技术:dtd技术    和    schema约束

12)dtd的快速入门

        创建一个文件    后缀名.dtd

        步骤:
                1)看xml中有多少个元素,有几个元素,在dtd文件中就写几个<!ELEMENT>
                2)判断这个元素是简单元素还是复杂元素
                            - 简单元素:没有子元素
                                    <!ELEMENT 元素名称 (#PCDATA)>
                            - 复杂元素:有子元素的元素
                                    <!ELEMENT 元素名称 (子元素1,子元素2,...)>
                3)在xml文件中引入dtd文件
                          <!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径">

    *  打开xml文件使用浏览器打开的,浏览器只负责校验语法的,不负责校验约束
    *  如果想要校验xml的约束,需要使用工具(Myeclipse或者IDEA等)

    打开开发工具
            创建一个项目
            在项目的src目录下面创建一个xml文件的dtd文件
            当xml中引入dtd文件之后,比如只能出现name,age,多写一个a,会提示报错

<a>标签为定义,所有会报错
dtd约束文件的内容

13)dtd的三种引入方式

        A. 引入外部的dtd文件
                <!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径">

        B. 使用内部的dtd文件
                - <!DOCTYPE 根元素名称[
                            <!ELEMENT person (name,age)>
                            <!ELEMENT name (#PCDATA)>
                            <!ELEMENT age (#PCDATA)>
                    ]>

        C. 使用外部的dtd文件(网络上的dtd文件)
                <!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">

14)使用dtd定义元素

        语法:<!ELEMENT 元素名 约束>

        简单元素
                <!ELEMENT 元素名 (#PCDATA)>
                    (#PCDATA):约束该元素是字符串类型
                    EMPTY:元素为空(不能有内容)
                    ANY:表示任意

        复杂元素
                <!ELEMENT person (name,age)>    - 子元素只能出现一次
                表示子元素出现的次数
                        +:表示一次或者多次
                        ?:表示零次或者一次
                        *:表示零次或者多次

                子元素之间使用逗号进行隔开    表示元素出现的顺序

                子元素之间使用 | 进行隔开    表示元素只能出现的其中的一个

15)使用dtd定义属性

    语法:<!ATTLIST 元素名称
                            属性名称 属性类型 属性的约束
                >

        属性类型:
            I.  CDATA:字符串
                    - 代码

            II. 枚举:表示在一定范围内,只能选择一个值

            III. ID类型:值只能是字母或者_开头
                    - 代码

        属性的约束
                #REQUIRED:属性必须存在
                #IMPLIED:属性可有可无
                #FIXED:表示一个固定值 #FIXED "AAA"
                - 直接值:不写属性,使用直接值,写了属性,使用设置那个值

16)实体的定义

        概念:在dtd中定义,在xml中使用

        语法:<!ENTITY 实体名称 "实体的值">

        引用方式(注意是在xml中使用):&实体名称;

DTD中定义:
        <!ENTITY    copyright    "小杨爱Java版权所有">

XML中引用:
        &copyright;

    根据dtd文件的内容,完成xml文件内容的代码

W3C案例

17)xml的解析的简介

        js使用dom解析标记型文档
            - 根据html的层级结构,在内存中分配一个树形结构
               把html的标签、属性和文本都封装成对象
            - document对象、element对象、属性对象、文本对象和Node节点对象

        xml的解析方式:dom  和  sax
                画图分析使用dom 和 sax 解析xml过程

                dom解析
                        缺点:如果文件过大,容易造成文件溢出
                        优点:很方便实现增删改操作

                sax解析
                        缺点;不能实现增删改操作
                        优点:如果文件过大,不会造成文件溢出,方便实现查询操作

        想要解析xml,首先想要解析器
        不同的公司和组织提供了    针对dom 和 sax方式的解析器,提供API方式提供
        sum公司提供了针对dom 和 sax解析器    jaxp
        dom4j组织,针对dom 和 sax解析器    dom4j
        jdom组织,dom 和 sax解析器    jdom

18)jaxp的API的查看

        jaxp是javaSE的一部分

        jaxp解析器在jdk的 javax.xml.parsers包里面
                四个类:分别是针对dom 和 sax解析使用的类
                    dom:
                            DocumentBuilder:解析器类
                            - 该类为抽象类,不能为new
                            此类的实例可以由DocumentBuilderFactory.newDocumentBuilder() 方法获取

                            - 一个方法,可以解析xml        parse("xml路径")    返回是Document整个文档
                            - 返回的Document是一个接口,父接口为Node,如果在Document里面找不到方法就到Node里面去找

                            - 在document里面有个方法
                                getElementsByTagName(String  tagName)
                                        ——  这个方法可以得到标签
                                        ——  返回集合   NodeList

        DocumentBuilderFactory:解析器工厂
            - 该类为抽象类,不能new
            newInstance() 获取 DocumentBuilderFactory的实例

查询功能
查询功能
添加功能
修改功能
删除功能
遍历功能

推荐阅读更多精彩内容

  • day22_XML_XML约束 思维导图 复习 今日内容 XML XML约束 XML的学习 XML概念 XML的介...
    蹦蹦跶跶的起床啊阅读 160评论 0 0
  • 一、XML的概念 1.概念: XML 指可扩展标记语言(EXtensible Markup Language);X...
    开源oo柒阅读 140评论 0 0
  • xml经典总结 XML(eXtensible Markup Language)是万维网联盟(World Wide ...
    java日记阅读 469评论 0 2
  • 目录 XML简介 XML基本语法 XML解析 * DOM解析   * DOM解析原理及工具   * DOM4J解析...
    望町阅读 285评论 0 2
  • XML; 是什么? Extensible Markup Languare 可扩展标记型语言 为什么要有XML? 1...
    _Levi__阅读 151评论 1 0