比较全的XML笔记-阿里云开发者社区

开发者社区> 开发与运维> 正文

比较全的XML笔记

简介: Xml全称为Extensible markup Language,可扩展标记语言   XML严格区分大小写   Xml可用于保存关系数据,软件的配置文件,描述软件模块之间的关系   xml文件包括以下几个部分: 元素 属性 注释 CDATA区 特殊字符   最简单的声明语法: <?xml version=”1.0” ?> 用encoding属性说明

Xml全称为Extensible markup Language,可扩展标记语言

 

XML严格区分大小写

 

Xml可用于保存关系数据,软件的配置文件,描述软件模块之间的关系

 

xml文件包括以下几个部分:

元素

属性

注释

CDATA

特殊字符

 

最简单的声明语法:

<?xml version=”1.0” ?>

encoding属性说明文档的字符编码:

<?xml version=”1.0” encoding=“gb2312”?>    (xml文档以什么编码保存,就要以什么编码打开)

 

standalone属性说明文档是否独立:

<?xml version = “1.0” encoding=”gb2312”standalone=”yes” ?>

一般来讲,xml文件伴随着一个约束文件

 

XML语法

一个XML文件主要包括以下几个部分内容

1、  文档声明

2、  元素

3、  属性

4、  注释

5、  CDATA

6、  特殊字符

 

xml文件的standalone属性默认是no

 

xml文件中必须出现一个开始标签,一个结束标签。

一个标签有以下几种:

包含标签体:<a>asdas</a>

不含标签体:<a></a>   可以简写成为:<a/>

 

Xml中有且只能有一个根元素。

文档中的空格和换行不同,默认文档不同,但是解析器可以将之trim掉。

 

Xml元素的命名规范

一个元素可以包含字母、数字以及其它一些可见字符,但必须遵循以下规范:

区分大小写,例如<p><P>是两个不同的标签。

Html不区分大小写。

不能以数字或“_”(下划线)开头

不能以xml(XML、或Xml)开头

 

不能包含空格

名称中间不能包含冒号(:)。

 

标签的属性

一个标签可以有多个属性,每个属性都有它自己的名称和取值。例如:<input name=”text”>

 

属性值一定要用双引号(“)或单引号(‘)引起来

 

定义属性必须遵循与标签相同的命名规范

 

Xml中的注释<!---->

 

注意:

1、  XML声明之前不能有注释

2、  注释不能嵌套

 

CDATA

1、  在编写XML文件时,有些内容可能不想让解析引擎执行,而是当做原始内容处理。

2、  遇到此种情况,可以把这些内容放在CDATA中处理

 

 

XML约束

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

 

常见的约束技术有

xml DTD:早期约束   必须是UTF-8Unicode

xml Schema:后期的约束

 

DTD约束快速入门

DTDDocument Type Definitiion)全称为文档类型定义。

 

DTD文件

写在第一行的<ELEMENT 书架 (+)>:表示根元素  根元素表示书架

+:表示一或多个。

#PCDATA:表示字符串。

xml文件被约束的条件是写一个DOCTYPE,然后跟一个  根元素用SYSTEM表示引用的是本地的一个定义。

 

<!DOCTYPE 书架 SYSTEM "book.dtd">  其中book.dtd表示相对路径。

 

 

book.dtd文件,用以约束book.xml文件

<!ELEMENT 书架 (+)>

<!ELEMENT (书名,作者,售价)>

<!ELEMENT 书名(#PCDATA)>

<!ELEMENT 作者(#PCDATA)>

<!ELEMENT 售价(#PCDATA)>

 

 

这里使用的是外部约束

book.xml文件

 

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

<!DOCTYPE 书架 SYSTEM "book.dtd">

<书架>

    <>

        <书名>javaweb开发</书名>

        <作者>老张</作者>

        <售价>30.00</售价>

    </>

</书架>

 

同样可以使用内部约束的方式如:

<!DOCTYPE 书架 [

       <!ELEMENT书架 (+)>

       <ELEMENT (书名,作者,售价)>

       <!ELEMENT书名(#PCDATA)>

       <!ELEMENT作者(#PCDATA)>

       <!ELEMENT售价(#PCDATA)>

]>

<书架>

    <>

        <书名>javaweb开发</书名>

        <作者>老张</作者>

        <售价>30.00</售价>

    </>

</书架>

 

当引用的文件是一个公共的文件时,采用如下方式:

<!DOCTYPE 文档根节点 PUBLIC DTD文件的URL>

<!DOCTYPE web-app PUBLIC

       "-//SunMicrosystems, Inc.//DTD Web Application 2.3//EN“

        "http://java.sun.com/dtd/web-app_2_3.dtd">

 

元素定义

定义xml文件能写哪些元素,以及这些元素的内容,定义能写哪些标签

 

 

属性

定义标签能写哪些属性

 

 

实体定义

在页面中引用的变量

 

 

元素定义

DTD文档中使用ElEMENT声明一个XML元素

语法格式如下

<!ELEMENT 元素名称元素类型>

元素的类型可以是元素的内容或类型

<!ELEMENT 书架(作者,售价)>   复杂元素

<!ELEMENT 书名(#PCDATA>表示简单元素

 

如为元素类型,则直接书写,如下:

<!ELEMENT 书架 EMPTY>

·EMPTY :用于表示空元素,例如<br/>

·ANY:表示元素内容为任意类型

 

约束中美约束的类型,则不能写。

 

+:一次或多次

?:0次或一次

*0次或多次。

 

<!ATTLIST 元素名:表示为哪个标签元素声明属性

 

#REQUIRED:不需的

    #REQUIRED:必须设置该属性

    #IMPLIED:可以设置也可以不设置

    #FIXED:说明该属性的取值固定为一个值,在 XML 文件中不能为该属性设置其它值。但需要为该属性提供这个值

直接使用默认值:在 XML 中可以设置该值也可以不设置该属性值。若没设置则使用默认值。 

 

DTD

XMLID不可以数字开头。

 

xml解析中有一个getElementById(“aaa”);Javascript中的不相同。

 

实体用于为一段内容创建一个别名,以后在XML文档中就可以使用别名引用这段内容了。

 

DTD定义中,一条<!ENTITY…>语句用于定义一个实体。

 

实体可以分为两种类型:引用实体和参数实体。

 

引用实体主要在XML文档中被应用

语法格式:

<!ENTITY 实体名称实体内容” >:直接转变成实体内容

 

引用方式:

&实体名称

 

举例:

<!ENTITY copyright “I am a programmer”>

&copyright;

 

参数实体:

参数实体被DTD文件自身,

 

语法格式:

%实体名称

 

举例:

<! % TAG_NAMES “姓名 | EMAIL | 电话 | 地址”>

<!ELEMENT 客户信息(%TAGINAMES;  | 公司名)>

 

 

DTD中根本就不支持数据类型的。

 

 

XML Schema

xml schema 也是一种用于定义和描述XML文档与内容的模式语言,其出现是为了克服DTD的局限性

 

xml schema特点:

1、  xml schemadtd更加符合xml语法结构,因为xml schema自身就是一个xml文件,为了有所,扩展名通常为.xsd

2、  xml解析器很容易解析出xmlschema文档中的内容。

3、  xml schema对名称空间支持得非常好。

4、  xml schemaxml DTD 支持更多的数据类型,并支持用户自定义新的数据类型

5、  xml Schema定义约束的能力非常强大,可以对xml实体文档作出细致的语义限制。

 

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

 

XML文件一样,一个XML Schema文档必须有一个根节点,通常需要把这个文件生命的元素绑定到一个uri地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML Schema 文档声明的元素绑定到一个命名空间上。以后xml文件就可以通过这个URL(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束。

 

名称空间的概念

1、  为什么要声明名称空间

由于xml文档可以被任何组织和个人定义,这就完全有可能在一个xml文件中出现重复的元素,此时使用名称空间可以加以区分。

2、  XML Schema中,每个文约束模式文档就可以被赋以一个唯一的名称空间,名称空间用一个唯一的URLUniformResource Identifier 统一资源标识符)表示。

3、  通过xmlns关键字来引用一个名称空间,用一个变量指定一个uri地址。如:xml文件中的内容。

<itcast:书架 xmlns:itcast=”http://www.itcast.cn”>

       <itcast:>……</itcast:>

</itcast:书架>

4、名称空间中的url虽然是以http开头的,但可以不指向任何一个真实的地址,而仅仅是作为一个名称空间来声明

 

MaxOccurs=”unbounded”:表示它的子节点是无上限的。

compleType:表示的意思是复杂元素

type='xs:string':表示数据类型为字符串。

 

 

book.xsd文档

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

<xs:schemaxmlns:xd="http://www.w3.org/2001/XMLSchema"

            targetNamespace="http://www.itcast.cn"

            elementFormDefault="qualified">

<xs:elementname="书架">

    <xs:sequence maxOccurs='unbounded'>

        <xs:elementname=''>

            <xs:compleType>

                <xs:sequence>

                    <xs:element name='书名' type='xs:string'/>

                    <xs:element name='作者' type='xs:string'/>

                    <xs:element name='售价' type='xs:string'/>

                </xs:sequence>

            </xs:compleType>

        </xs:element>

    </xs:sequence>

</xs:element>

</xs:schema>

 

targetNamespace的作用是将shema文档中定义的元素绑定到:http://www.itcast.cn这个名称空间上了。

 

book.xml文档,此文档被上面一个文档约束。

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

<itcast:书架 xmlns:itcast="http://www.itcast.cn"

                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                xsi:schemaLocation="http://www.itcast.cnbook.xsd">

        <itcast:>

            <itcast:书名>JavaScript网页开发</itcast:书名>

            <itcast:作者>张孝祥</itcast:作者>

            <itcast:售价>28.00</itcast:售价>

        </itcast:>

</itcast:书架>

 

xsi:schemaLocation="http://www.itcast.cn book.xsd":用于说明名称空间是绑定在本地的book.xsd文件中。说明其下面的元素实际定义在什么位置。实际上是在http://www.itcast.cn book.xsd上。

 

schemaLocation:表示来自xsi名称空间,而xsi有来自:xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance真实存在的网址。这是一个真实的约束文档,输入这个网址后可以看到一个真实约束文档,这个文档是w3c定义好的。

 

xs命名空间;来自w3c定义好的约束文档中。

 

使用默认的名称空间:

基本格式:xmlns=”URL”

举例:

使用默认名称空间的原因是,我的xml文档只使用一个约束文档。此时就可以不使用约束文档。

那么itcast就可以省了。可以写成以下的部分:

<书架 xmlns=”http://www.it315.org/xmlbook/schema”>

       xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

       xsi:schemaLocation=http://www.itcast.cn  book.xsd

       <>

              <书名>Javascript网页开发</书名>

              <作者>张孝祥</作者>

              <售价>28..00</售价>

</>

</书架>

 

不适用名称空间引入XMLSchema文档

文件清单:xmlbook.xml

<?xml version=”1.0” encoding=”UTF-8”?>

<书架 xmlns:xsi=”http://www.w3c.org/2001/XMLSchema-instance”

                     xsi:noNamespaceSchemalLocation=”xmlbook.xsd”>

                     <>

                            <书名>JavaScript网页开发</书名>

                            <作者>张孝祥</作者>

                            <售价>28.00</售价>

</>

</书架>

 

下面是引用CSS的方式,其中config.css和它是在同级目录下的。

<?xml version="1.0"encoding="gb2312" standalone="no"?>

<?xml-stylesheettype="text/css" href="config.css"?>

<soft>

       <a>

              <a1 id="a1">中国</a1>

              <a2 id="a2">美国</a2>

       </a>

       <b>

              <b1 id="b1">英国</b1>

              <b2 id="b2">日本</b2>

       </b>

</soft>

      

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章