XML详解

XML详解

一、xml产生的原因

  • xml(可拓展的标记语言)是为了可以自定义HTML中的标记(标签),以及为了描述数据而产生的

二、xml的作用

  • 1.数据传输格式的标准
  • 2.用作配置文件
  • 3.充当小型数据库

三、xml文件的构成

1、文档声明

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

  • xml文件需要在一开始解析器一些信息
    • ?xml代表本文件是xml文件
    • version后面是xml版本号
    • encoding后面是这个文件的字符编码
  • 处理指令
    • 在文档声明的后面可以加上文件处理指令
	xml-stylesheet指令:链接CSS样式表
	<?xml-stylesheet href="class.css" type="text/css"?>
2、文档体
  • 文档体由元素和注释组成:
  1. 元素(标签,标记):
    • xml文件只有一个根元素,要将其他所有元素包括起来
    • xml标签格式由一对尖括号组成:’<></>’,’<>‘代表标签的开始,’</>'代表标签的结束
    • xml标签中可以填写数据和文本
    • xml标签可以嵌套,单不允许交叉嵌套,例如:

      <a>hello<b>world</b></a> //嵌套

      <a>hello<b>world</a></b> //交叉嵌套
    • xml标签的开始标签中可以添加属性,属性值由双引号(")或单引号(’)分隔

      <a name="study"></a>
    • 在xml文件中有一些特殊字符是显示不出来的,要使用一些特殊符号代替,这种规定好的特殊字符被称为实体
      • 预定义字符实体(’;'不能省略)
		&lt;		<
		&gt;		>
		&quot;		"
		&apos;		'
		&amp;		&
	+ 自定义实体
		<!--定义实体在文档声明的后面-->
		<!DOCTYPE 根元素[
			<!--<!ENTITY 实体名 "实体值">-->
			<!ENTITY home "China">
		]>

		<!--实体的使用-->
		&home;
+ CDATA,字符原样输出,不会被实体内容替代,原样解析(xml默认是PCDATA,是会被解析)
	CDATA的使用

	<![CDATA['内容']]>
  1. 注释:
  • 注释的格式:<!--注释内容-->
  • 注释不能嵌套

###xml的命名空间

  • 当两个文档有相同的元素名且含义不同,在一起使用时。就会发生命名冲突,解析器无法对这两个元素进行区分,这个时候就要使用命名空间
  1. 第一种解决方法:在元素上声明命名空间
	<h:table>
	   <h:tr>
		   <h:td>Apples</h:td>
		   <h:td>Bananas</h:td>
	   </h:tr>
	</h:table>

	另一个xml文档
	<f:table>
	   <f:name>茶几</f:name>
	   <f:width>80</f:width>
	   <f:length>120</f:length>
	</f:table>
  1. 第二种解决方法:使用默认命名空间(xmlns=“namespaceURI”)
	<table xmlns="http://www.koutian.com">
	   <tr>
		   <td>Apples</td>
		   <td>Bananas</td>
	   </tr>
	</table>
	
	另一个xml文档
	<table xmlns="http://www.baidu.com">
	   <name>茶几</name>
	   <width>80</width>
	   <length>120</length>
	</table>

四、xml约束

  • xml约束是用来约束一个xml文档的书写规范

  1. 内部DTD约束(这里只介绍相关用法)
	<?xml version="1.0" encoding="UTF-8"?>
	DTD约束声明
	<!DOCTYPE students[
		<!ELEMENT students (stu+)>
		<!ELEMENT stu (id,name,age)>
		<!ELEMENT id   (#PCDATA)>
		<!ELEMENT name (#PCDATA)>
		<!ELEMENT age  (#PCDATA)>
	]>
	<students>
		<stu>
			<id>1</id>
			<name>tom</name>
			<age>20</age>
		</stu>
	</students>
  1. 外部DTD约束
	<?xml version="1.0" encoding="UTF-8"?>
	引用外部的dtd约束(SYSTEM表示引用的dtd文件在本地)
	<!DOCTYPE students SYSTEM "student.dtd">
	<students>
		<stu>
			<id>1</id>
			<name>tom</name>
			<age>20</age>
		</stu>
	</students>

	PUBLIC表示引用一个公共的DTD文件
	<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

注:约束文件除了dtd以外,还有种格式叫.xsd,两种文件都是对xml文件进行约束,但是语法不同

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值