• XML


    XML的学习目标:

    1)能用XML描述现实中的有层次关系的数据

    2)能使用程序读取到XML中表示的数据

    一、XML是什么?作用是什么?

    1.XML是指可扩展标记语言,用户自定义的标签,是相对于HTML来讲的(标签预定义的)。

    2.XML被设计的宗旨是表示数据(传输和存储数据)。HTML是用来显示数据的。目前经常使用的XML版本是1.0。

    3.XML除了表示数据外。在实际的企业开发中,主要用XML作为程序的配置文件。

    (在一个软件系统中,通过XML配置文件可以提高系统的灵活性。即程序的行为是通过XML文件来配置的,而不是硬编码。

    4.XML是一种通用的数据交换格式。

    二、XML文档的组成

    一个XML文件一般由以下几个部分组成:

    1.文档声明

    作用:用于标识该文档是一个XML文档

    注:声明必须出现在文档的第一行(之前连空行都不能有,也不能有任何的注释)

    最简单的XML声明:<?xml version="1.0"?>

    声明中的encoding属性:说明解析当前XML文档时所使用的编码。默认是UTF-8

    <?xml version="1.0" encoding="GB2312"?>

    声明中的standalone属性:说明XML文档是否是独立的。

    <?xml version="1.0" standalone="yes"?>

    2.元素

    XML元素指XML文件中出现的标签。

    一个标签分为起始和结束标签。结束标签不能省略。

    eg:包含标签体<mytag>apple</mytag>

       不包含标签体<mytag/>

    一个XML文档必须且只能有一个根标签,其他标签都是这个根标签的子标签或孙标签。

    XML文档中不会忽略回车和换行及空格(注:在XML文档中不使用回车换行等,可提高在网络上传输效率)

    标签的命名规范:元素(标签)的名称可以包含字母、数字、减号、下划线和英文句点。严格区分大小写。

    3.元素的属性

    一个元素可以有多个属性,每个属性都有它自己的名称和取值。

    元素的属性取值一定要用引号引起来(单引号或双引号)

    在XML中,标签属性所代表的信息也可以被改成用子元素的形式来描述。

    4.注释

    <!--这是注释-->

    注释不能嵌套

    5.CDATA区

    作用:把CDATA中的内容都当做是文本。

    语法:

    <![CDATA[

             文本内容

    ]]>

    例如:

    <![CDATA[

             <福建>

                       <厦门></厦门>

                       <福州></福州>

             </福建>

    ]]>

    6.特殊字符

    &  -->  &amp;

    <   -->  &lt;

    >  -->  &gt;

    "  -->  &quot;

    '  -->  &apos;

    7.处理指令(PI)

    作用:用来指挥软件如何解析XML文档。

    语法:必须以"<?"作为开头,以"?>"作为结尾。

    eg:

    <?xml version="1.0"?>

    eg:

    demo.xml

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/css" href="s.css"?>
    <size>
        <big></big>
        <medium></medium>
        <small></small>
    </size>
    s.css
    big{
        font-size:400px;
        color:red;
    }
    medium{
        font-size:100px;
        color:blue;
    }
    small{
        font-size:40px;
        color:green;
    }

    三、XML约束

    XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束。

    1.格式良好的XML文档:符合XML语法的。

    2.有效的XML文档:遵循约束规范的。

    格式良好的不一定是有效的,有效的必定格式良好。

    四、DTD的基本语法

    DTD:文档类型定义

    作用:约束XML的书写规范。

    DTD文件保存到磁盘时,必须使用UTF-8编码

    1.引入外部的DTD文档来约束当前的XML文档

    DTD文件在本地:<!DOCTYPE 根元素名称 SYSYTEM "DTD文件的路径">

    DTDT文件在网络上:<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD的路径URL">

    2.定义元素

    语法:<!ELEMENT 元素名称 使用规则>

    使用规则:

    (#PCDATA):指示元素的主体内容只能是普通的文本。

    EMPTY:指示元素不能有主体内容。

    ANY:用于指示元素的主体内容为任意类型

    (子元素):指示元素中包含的子元素

             如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档

             如果子元素用“|”分开,说明任选其一

             用+、*、?来表示元素出现的次数

             如果元素后面没有+、*、?表示必须且只能出现一次

             +:表示至少出现一次,一次或多处

             *:表示可有可无,零次、一次或多处

             ?:表示可有可无,有的话只能有一次。

    3.定义属性

    语法:<!ATTLIST 元素名

                                属性名1 属性值类型 设置说明

                                属性名2 属性值类型 设置说明>

    属性值类型:

                                CDATA:说明该属性的取值为一个普通文本

                                ENUMERATED (DTD没有此关键字)

                                         语法:<!ATTLIST 元素名称 (值1|值2)  "值1">

                                ID:属性的取值不能重复

    设置说明:

                       #REQUIRED:表示该属性必须出现

                       #IMPLIED:表示可有可无

                       #FIXED:表示属性的取值为一个固定值

                                         语法:#FIXED "固定值"

                                         直接值:表示属性的取值为该默认值

    4.定义实体(ENTITY)

    实体的定义分为引用实体和参数实体

    引用实体:

                       作用:在DTD中定义,在XML中使用

                       语法:<!ENTITY 实体名称 "实体内容">

                       在XML中使用:&实体名称;

    参数实体:

                       作用:在DTD中定义,在DTD中使用

                       语法:<!ENTITY % 实体名称 "实体内容">

                       在DTD中使用:%实体名称;

    eg:

    instance.dtd

    <!ELEMENT TVSCHEDULE (CHANNEL+)>
    <!ELEMENT CHANNEL (BANNER,DAY+)>
    <!ELEMENT BANNER (#PCDATA)>
    <!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
    <!ELEMENT HOLIDAY (#PCDATA)>
    <!ELEMENT DATE (#PCDATA)>
    <!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
    <!ELEMENT TIME (#PCDATA)>
    <!ELEMENT TITLE (#PCDATA)> 
    <!ELEMENT DESCRIPTION (#PCDATA)>
    <!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
    <!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
    <!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
    <!ATTLIST TITLE RATING CDATA #IMPLIED>
    <!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

    instance.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE TVSCHEDULE SYSTEM "instance.dtd">
    <TVSCHEDULE NAME="XXTV">
        <CHANNEL CHAN="YY">
            <BANNER>AAA</BANNER>
            <DAY>
                <DATE>2013-04-13</DATE>
                <PROGRAMSLOT>
                    <TIME>14:57</TIME>
                    <TITLE LANGUAGE="ZH">TT</TITLE>
                    <DESCRIPTION>DD</DESCRIPTION>
                </PROGRAMSLOT>
            </DAY>
        </CHANNEL>
    </TVSCHEDULE>

    五、Schema

    1.Schema简介

    1)XML Schema是一种用于定义和描述XML文档结构与内容的模式语言。

    2)XML Schema文件自身就是一个XML文件,但它的扩展名通常为.xsd。

    3)一个XML Schema文档通常称为模式文档(约束文档),遵循这个文档书写的XML文件称为实例文档

    2.快速入门案例

    根据book.xsd编写book.xml

    book.xsd

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                          targetNamespace="http://www.lsl.cn"
                          elementFormDefault="qualified">
        <xs:element name='书架' >
            <xs:complexType>
                <xs:sequence maxOccurs='unbounded' >
                    <xs:element name='书' >
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name='书名' type='xs:string' />
                                <xs:element name='作者' type='xs:string' />
                                <xs:element name='售价' type='xs:string' />
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:schema>

    book.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <lsl:书架 xmlns:lsl="http://www.lsl.cn"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.lsl.cn book.xsd">
            <lsl:>
                <lsl:书名>JavaSE</lsl:书名>
                <lsl:作者>张三</lsl:作者>
                <lsl:售价>80.0</lsl:售价>
            </lsl:书>
    </lsl:书架>

    分析:(根据xsd约束文档编写xml的步骤)

    a、首先看Schema文档,找到根元素

    <?xml version="1.0" encoding="UTF-8"?>
    <书架></书架>

    b、思考:书架来自于哪个名称空间?看Schema文档,targetNamespace就是名称空间。

    用xmlns关键字(xmlns名称空间声明)来声明我的元素来自哪个名称空间(xmlns:xml namespace)

    <?xml version="1.0" encoding="UTF-8"?>
    <lsl:书架 xmlns:lsl="http://www.lsl.cn"></lsl:书架>

    c、思考:名称空间与哪个xsd文件对应呢?使用schemaLocation关键字来关联名称空间和xsd的对应关系

    <?xml version="1.0" encoding="UTF-8"?>
    <lsl:书架 xmlns:lsl="http://www.itcast.cn" 
                schemaLocation="http://www.lsl.cn book.xsd"></lsl:书架>

    d、schemaLocation来自哪里?来自一个标准的名称空间

             (http://www.w3.org/2001/XMLSchema-instance)

    <?xml version="1.0" encoding="UTF-8"?>
    <lsl:书架 xmlns:lsl="http://www.itcast.cn" 
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.lsl.cn book.xsd">
    </lsl:书架>

    3.引用两个Schema文件

    company.xsd

    <?xml version="1.0" encoding="UTF-8"?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.org/company" 
    elementFormDefault="qualified">
        <element name="company">
            <complexType>
                <sequence>
                    <element name="employee">
                        <complexType>
                            <sequence>
                                <any></any>
                                <element name="name"></element>
                            </sequence>
                            <attribute name="age" type="int"></attribute>
                        </complexType>
                    </element>
                </sequence>
            </complexType>
        </element>
    </schema>

    department.xsd

    <?xml version="1.0" encoding="UTF-8"?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.example.org/department"
    elementFormDefault="qualified">
        <element name="name" type="string"></element>
    </schema>

    company.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <company xmlns="http://www.example.org/company"
        xmlns:dept="http://www.example.org/department"
        xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.example.org/company
     company.xsd http://www.example.org/department department.xsd"
    >
        <employee age="20">
            <dept:name>人力资源部</dept:name>
            <name>小刘</name>
        </employee>
    </company>
  • 相关阅读:
    20170809--JS操作Select备忘
    20160711--C# 委托的三种调用示例(同步调用 异步调用 异步回调)【转载】
    C# 内存建表备忘
    富文本编辑器 CKeditor 配置使用
    20160520—JS打分控件
    20160513--js 弹出窗口带有iframe控件 备忘
    chart 简单应用
    mvc 简单整理
    ObjectDatasourse 的绑定及显示
    GridView 详述
  • 原文地址:https://www.cnblogs.com/EvanLiu/p/3662548.html
Copyright © 2020-2023  润新知