xml入门

什么是 XML?

XML 即可扩展标记语言(Extensible Markup Language),是一种平台无关的表示数据的方法。 简单地说,使用 XML 创建的数据可以被任何应用程序在任何平台上读取。甚至可以通过手动编码来编辑和创建 XML 文档。其原因是,XML 与 HTML 一样,都是建立在相同的基于标记技术基础之上。

一个示例

比如说,假设我们想要使用 XML 存储关于某个事务的信息。这个事务是由销售人员的 iBook 发起的,因此您想把信息存储在 iBook 中。但是,信息稍后会发送给 Windows 服务器上的数据应用程序,并且最终保存在您的主机中,因此这需要极佳的灵活性才能完成。使用 XML 创建的数据内容如清单 1 所示。 清单 1. XML 示例

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

<transaction ID="THX1138"> 

<salesperson>bluemax</salesperson> 

<order> <product productNumber="3263827"> 

<quantity>1</quantity> 

<unitprice currency="standard">3000000</unitprice> 

<description>Medium Trash Compactor</description> 

</product> 

</order>

<return></return> 

</transaction>

XML 将信息作为文本存储,这样数据便可以在任何可能需要的环境中使用。甚至不需使用特殊的应用程序,我们便可以看到内容(粗体显示)和标记(用于描述内容)。

xml基本语法:

1、文档声明

  文档的声明必须出现在第一行,之前连空行和注释都不能有.

  文档声明, 最简单的语法: <?xml version="1.0"?>

  encoding="UTF-8", 如果不添加,默认的采用的是UTF-8编码,保存在磁盘上的编码要与声明的编码一样!

  standalone属性,用来说明文档是否独立,即文档是否依赖其他文档。

<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>

2、元素

  1)       xml 元素是指xml中的标签。一个标签分为开始标签和结束标签:

    a)         包含标签主体:<mytag>some content</mytag>

    b)         不含标签主体:<mytag/>

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

  3)       一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套。

  4)       xml 中的空格与换行不会被忽略,会当做原始内容被处理.

  5)       一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范:

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

    b)         不能以数字或"_" (下划线)开头。

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

    d)         不能包含空格。

    e)         名称中间不能包含冒号(:) (有特殊用途)。

3、属性

 

  1)       一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:  <mytag name="value"/>

  2)       属性值一定要用双引号(")或单引号(')引起来

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

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

 

4.注释 

  注释的语法: <!--这是注释哦.-->

  注释不能写在第一行.

  注释不能够嵌套. 

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <!-- 注释 -->
 3 <书架> 
 4   <书 出版社="中国上海"> 
 5     <名字>诛仙</名字>  
 6     <作者>萧鼎</作者>  
 7     <价格>32.00</价格>  
 8     <出版日期>2007年</出版日期> 
 9   </>  
10   <书 出版社="中国北京"> 
11     <名字>笑傲江湖</名字>  
12     <作者>金庸</作者>  
13     <价格>50.00</价格> 
14   </> 
15 </书架>

5.CDATA区

  用于将一段内容当做普通文本.

  语法:<![CDATA[

                   文本内容

         ]]>

6.特殊字符

    &     &amp;    ampersand

    <      &lt;          less than

    >      &gt;         great than

    "      &;quot;   quotation

    '        &apos;    apostrophe

7.处理指令(processing instruction) (PI)

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

    处理指令(以下简称PI)的目的是为了给处理页面的程序(例如XML解析器)提供额外的信息。PI通常情况下是没有固定格式的,唯一的要求是紧随第一个问号必须至少有一个字母。在此之后,PI可以包含除了小于号和大于号之外的任何字符串序列。

最常见的PI是用来指定XML文件的样式表:

    如:常用的PI指令:

    XML声明:<?xml version=“1.0” encoding=“GB2312”?>

    xml-stylesheet指令:<?xml-stylesheet type = “text/css” herf=”test.css”>

<?xml version="1.0" encoding="UTF-8"?>
<!-- 这里用处理命令加入css样式 -->
<?xml-stylesheet type="text/css" href = "PITest.css" ?>
<中国>
    <北京>北京</北京>
    <上海>上海</上海>
    <深圳>深圳</深圳>
</中国>
PITest.css 文档如下:

 1 @CHARSET "UTF-8";
 2 北京{
 3         font-size: 100px ;
 4         color: red; 
 5     }
 6 上海{
 7         font-size: 110px ; 
 8         color: green  ;
 9     }
10 深圳{
11         font-size:100px ;
12         color: yellow ; 
13     }

三、XML的约束

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

         2、XML 约束技术:

         常用的有:XML DTD 和 XML Schema

         3、XML 约束的必要性:

     a) XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错.

         总结:

         格式良好的XML 文档,遵循语法规则的XML 文档。

         有效的XML 文档,遵循约束文档的 XML 文档。

         约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。

四、DTD的基本语法

   1.DTD 约束的两种方式:

         DTD 约束可以作为一个单独的文档编写,也可以编写在XML 文档内。(编写XML内部的DTD代码),当作为单独文件时,要用utf-8格式存储。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!--  在XML 写入DTD 约束 -->
 3 <!DOCTYPE 世界[
 4     <!ELEMENT 世界 (国家+) >
 5     <!ELEMENT 国家 (名字)>
 6     <!ELEMENT 名字 (#PCDATA) >
 7     <!ATTLIST 名字
 8         所属洲  CDATA #IMPLIED 
 9     >
10     <!ATTLIST 国家 所属洲 (亚洲|欧洲|南美洲|南极洲|澳洲|非洲|北美洲) "亚洲">
11     ]>
12     
13 <世界>
14      <国家 所属洲 = "亚洲">
15          <名字>中国</名字>
16      </国家>
17      <国家>
18          <名字 所属洲 = "美洲">美国</名字>
19      </国家>
20 </世界>

XML 引用 DTD 约束文件时:

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <!DOCTYPE 书架 SYSTEM "book.dtd" >
 3 <书架> 
 4   <> 
 5     <名字>诛仙</名字>  
 6     <作者>萧鼎</作者>  
 7     <价格>32.00</价格>   
 8   </>  
 9   <> 
10     <名字>笑傲江湖</名字>  
11     <作者>金庸</作者>  
12     <价格>50.00</价格> 
13   </> 
14 </书架>

a)本地的 : <!DOCTYPE 根元素 SYSTEM “DTD文档路径”>

         b)互联网上的:  <!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">

  注意book.dtd文档如下:

<!ELEMENT 书架 (书+)>
    <!ELEMENT 书 (名字,作者,价格)>
        <!ELEMENT 名字 (#PCDATA)>
        <!ELEMENT 作者 (#PCDATA)>
        <!ELEMENT 价格 (#PCDATA)>

XML约束之schema

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

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

l  和XML文件一样,一个XML Schema文档也必须有一个根结点,但这个根结点的名称为Schema。

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

<?xml version="1.0" encoding="UTF-8"?>
 2 <!-- 
 3     在XML Schema中,每个约束模式文档都可以被赋以一个唯一的名称空间,
 4     名称空间用一个唯一的URI(Uniform Resource Identifier,统一资源标识符)表示
 5     
 6     名称空间:
 7     targetNamespace="http://jbelial.cnblogs.com"
 8     URL:http://jbelial.cnblogs.com 根本没有指向任何文件,只是一个分配的名字。
 9     
10     elementFormDefault="qualified"
11     
12     elementFormDefault元素用于指定,
13     该schema文档中声明的根元素及其所有子元素都属于targetNamespace所指定的名称空间。
14     
15     -->
16 <schema  xmlns="http://www.w3.org/2001/XMLSchema" 
17         targetNamespace="http://jbelial.cnblogs.com"
18         xmlns:tns="http://www.example.org/NewXMLSchema" 
19         elementFormDefault="qualified">
20     <!-- 规定根元素 -->
21     <element name='书架'>
22         <!-- 根元素下存放复杂数据类型 --> 
23         <complexType>
24             <!-- 根元素下的元素的排列方式,和数目为"未绑定" -->
25             <sequence maxOccurs='unbounded'>
26                 <element name='书'>
27                     <complexType>
28                         <sequence>
29                         <!-- 约束:元素的名字,和接收类型: -->
30                             <element name="名字" type="string" /> 
31                             <element name="作者" type="string" /> 
32                             <element name="价格" type="string" /> 
33                         </sequence>
34                     </complexType>
35                 </element>
36             </sequence>
37         </complexType>
38     </element> 
39  </schema>
复制代码

在用Schema 约束XML 文档时,要注意一下问题:

    a)你要创建的xml文档中的根标签是什么?

     第一个出现的 <xs:element name='书架' > 就是根标签 

    b) 思考: 你使用这个根标签它来自哪个名称空间.

      在schema约束文档中的 targetNamespace="http://jbelial.cnblogs.com" 就是用来说明所有跟标签绑定在哪个目标名称空间上. 

    c) 思考: 你要引用 schema文档它与目前名称空间的对应关系?

        需要在xml文档中添加  xsi:schemaLocation="{namespace} {location}"

        {namespace} 就是 : http://jbelial.cnblogs.com

        {location}  : 引用的schema文档在哪里

    d) 固定的写法:

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

     

复制代码
<?xml version="1.0" encoding="UTF-8"?>
        
<p:书架 xmlns:p = "http://jbelial.cnblogs.com"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://jbelial.cnblogs.com 
                            NewXMLSchema.xsd">
    <p:>
        <p:名字>射雕英雄传</p:名字>
        <p:作者>金庸</p:作者>
        <p:价格>100.00</p:价格>
    </p:书> 
</p:书架>


  








你可能感兴趣的:(xml入门)