首页 > 代码库 > xml学习笔记

xml学习笔记

1.xml介绍

  xml是指可扩展标记语言,是被设计用来结构化、存储以及传输信息,是独立于软件和硬件的信息传输工具。

2.基本语法

 1.文档声明

    在编写XML文档时,需要先使用文档声明来声明XML文档。且必须出现在文档的第一行

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

     意思是这是一个xml文件,写入内存的时候的编码为UTF-8

  2.标签

   xml必须包含有根元素,该元素是所有其他元素的父元素类似(html)。

    <beans>

      <bean>

      </bean>

    </beans>

    xml中所有元素都必须有关闭标签:

      非法标签:

        <p>name

        <p>age

      合法标签:

        <p>name</p>

    标签名必须为字母或者下划线开头: a,_a;

    避免使用 "-" , "." , ":"来命名标签名 

    不能以xml作为标签;

    不能有空格:ab;

    字符之间不能使用分号;

    大小写敏感(title和Title不是同一个标签);

    标签属性值必须加上分号:

    <title name=""></title>

    一些字符具有特殊意义

    <title>10 < 100 </title>要写成<title>10  &lt; 100<title>

    技术分享

    元素中的空格会被保留;

    注释格式:

    <!-- 这是一个注释 -->

    在XML 中,应该尽量避免使用属性。如果信息感觉起来很像数据,使用第一种格式。

    第一种格式:

      <user>

        <name>tom</name>

      </user>

    第二种格式:

      <user name="tom">

      </user>

    有时候会向元素分配 ID 引用。这些 ID 索引可用于标识 XML 元素,它起作用的方式与 HTML 中 ID 属性是一样的。仅起到标识作用,并不是标签数据的组成部分。

      <user id="10001"></user>

3.XML约束

  1.DTD约束

 

      DTD 的作用是定义XML文档的结构。它使用一系列合法的元素来定义文档结构:

    dtd可以写在单独的文件中,扩展名是dtd,且必须使用UTF-8编码进行保存。

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

    <!DOCTYPE 根元素 SYSTEM "文件名">

     详细地址http://www.w3school.com.cn/dtd/dtd_intro.asp

  2.schema约束

    XML Schema 的作用是定义XML文档的合法构建模块,类似 DTD。

     作用:

        1)可以定义可出现在文档中的元素
          2)可以定义可出现在文档中的属性
          3)可以定义哪个元素是子元素
          4)可以定义子元素的次序
          5)可以定义子元素的数目
          6)可以定义元素是否为空,或者是否可包含文本
          7)可以定义元素和属性的数据类型
          8)可以定义元素和属性的默认值以及固定值 
 
    XML Schema 最重要的能力之一就是对数据类型的支持。

    XML Schema 文件自身就是一个XML文件,但它的扩展名通常为.xsd。支持名称空间。一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档。和XML文件一样,一个XML Schema文档也必须有一个根结点,但这个根结点的名称为schema。编写了一个XML Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个URI地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML Schema文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束。

  约束文档:

    模式文档(约束文档):

<?xml version="1.0"?>
<!-- xml:xs 显示schema中用到的元素和数据类型来自命名空间"http://www.w3.org/2001/XMLSchema -->
<!-- targetNamespace显示schema定义的元素来自命名空间http://www.w3school.com.cn -->
<!-- elementFormDefault="qualifield"指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       targetNamespace="http://www.cnblogs.com/rookie404/"
       xmlns="http://www.cnblogs.com/rookie404/"
       elementFormDefault="qualifield">
<xs:element name="user">
  <xs:complexType>
    <xs:sequence>
      <!-- 声明一个元素 -->
      <!-- fixed为固定的不可变的-->
      <xs:element name="name" type="xs:string" fixed="rookie404"/>
      <!-- default为默认的-->
      <xs:element name="sex" type="xs:string" default="man">
      <xs:element name="age" type="xs:integer">
      <xs:element name="date" type="xs:date" >
      <!-- 声明一个默认元素元素 -->
      <xs:attribute name="lang" type="xs:string" default="string">
    </xs:sequence>
  </xs:complexType>
</xs:element>
<xs:schema>

 

    实例文档: 

<?xml version="1.0" encoding="UTF-8"?>
<!-- xmlns规定默认命名空间的声明 告知schema验证器,在此xml文档中使用的所有元素都声明于
    ”http://www.cnblogs.com/rookie404“ -->
<!-- xmlns:xsi 这个命名空间里面的元素或者属性就必须要以xsi:这种方式来写,比如schemaLocation就是他的一个属性,
所以写成xsi:schemaLocation,而默认命名空间不带类似xsi这种,其实xml标签名称有个专业叫法叫做QName,而如果没有前面的xsi:这种一般叫做NCName -->
<!-- schemaLocation属性有两个值。第一个值是需要使用的命名空间。第二个值是供命名空间使用的 XML schema 的位置:-->
<user xmlns="http://www.cnblogs.com/rookie404/"
    xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.cnblogs.com/rookie404/ http://www.cnblogs.com/rookie404/user.xsd">
    <name>rookie404</name>
    <sex>man</sex>
    <age>23</age>
    <date>2016-09-15</date>
</user>

 

     详细地址http://www.w3school.com.cn/schema/index.asp

 

xml学习笔记