xml学习笔记
Posted Write the Code Change the Worl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 < 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。
作用:
2)可以定义可出现在文档中的属性
3)可以定义哪个元素是子元素
4)可以定义子元素的次序
5)可以定义子元素的数目
6)可以定义元素是否为空,或者是否可包含文本
7)可以定义元素和属性的数据类型
8)可以定义元素和属性的默认值以及固定值
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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
XXE外部实体注入(XML External Entity Injection)学习笔记
在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途