XML 可拓展标记语言

XML 简介

a) xml, eXtensible Markup Language, 可拓展标记语言.是一种标记语言.
b) xml是一种非常灵活的语言, 没有固定的标签, 所有的标签都可以自定义.
c) 通常,xml被用于信息的记录和传递. 因此xml经常用于充当配置文件

XML格式

a) 声明信息 ,用于描述XML的版本,编码方式.

版本始终是1.0 编码一般选utf-8

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

b) 根元素 (一对标签)

根元素有且仅有一个

c) xml是大小写敏感的

d) 标签是成对的,而且要正确嵌套

e) 属性值要使用双引号

下面id就是属性,""里面是属性值

<?xml version="1.0" encoding="utf-8"?>
<a>
	<aa id="101">
		xxx
	</aa>
</a>

f) 注释写法

<!-- 这里是注释-->
<?xml version="1.0" encoding="utf-8"?>
<books>
	<book>
		<name>
			xml101
		</name>
		<author>
			张三
		</author>
		<price>
			50.5
		</price>
	</book>
	<book>
		<name>
			xml102
		</name>
		<author>
			李四
		</author>
		<price>
			40.4
		</price>
	</book>
</books>
<!-- 这里是注释-->

可以直接用浏览器打开

还可以折叠

DTD

DTD 简介

a) DTD , Document Type Definition,文档类型定义

b) DTD 用于约束xml的文档格式,保证xml是一个有效的xml.

c) DTD 可以分为两种,内部DTD,外部DTD.

DTD内部声明

假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:

<!DOCTYPE 根元素 [元素声明]>

元素声明语法 :

数量词

+: 出现一次或多次
?: 出现0次或一次
*: 出现任意次

属性声明语法

<!ATTLIST 元素名称 属性名称 属性类型 默认值>

PCDATA

PCDATA 的意思是被解析的字符数据(parsed character data)。

可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。

PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。

文本中的标签会被当作标记来处理,而实体会被展开。

不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 实体来分别替换它们。

CDATA

CDATA 的意思是字符数据(character data)。

CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE scores[
	<!ELEMENT  scores (student*)>
	<!ELEMENT  student (name,course,score)>
	<!ATTLIST  student id CDATA #REQUIRED>
	<!ELEMENT  course (#PCDATA)>
	<!ELEMENT  score (#PCDATA)>
	<!ELEMENT  name (#PCDATA)>
]>

<scores>
	<student id="1">
		<name>
			张三
		</name>
		<course>
			数学
		</course>
		<score>
			75
		</score>		
	</student>
	<student id="2">
		<name>
			李四
		</name>
		<course>
			数学
		</course>
		<score>
			88
		</score>		
	</student>
</scores>

外部的DTD声明

假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:

要创建一个单独的dtd文档 1.dtd

<?xml version="1.0" encoding="utf-8" ?>
<!ELEMENT  scores (student*)>
<!ELEMENT  student (name,course,score)>
<!ATTLIST  student id CDATA #REQUIRED>
<!ELEMENT  course (#PCDATA)>
<!ELEMENT  score (#PCDATA)>
<!ELEMENT  name (#PCDATA)>

然后引入

<?xml version="1.0" encoding="utf-8" ?>
<!-- 引入外部DTD文件-->
<!DOCTYPE scores SYSTEM "1.dtd">

<scores>
	<student id="1">
		<name>
			张三
		</name>
		<course>
			数学
		</course>
		<score>
			75
		</score>		
	</student>
	<student id="2">
		<name>
			李四
		</name>
		<course>
			数学
		</course>
		<score>
			88
		</score>		
	</student>
</scores>

DTD实体

参考 https://blog.csdn.net/Liuqz2009/article/details/51848912

实体是用于定义引用普通文本或特殊字符的快捷方式的变量。

实体引用是对实体的引用。

实体可在内部或外部进行声明。

实体格式如下: 以下是代码片段:

实体又分两类:
1,一般实体(格式:&实体引用名;)
2,参数实体(格式:%实体引用名;)
一般实体,可以在XML文档中的任何位置出现的实体称为一般实体。实体可以声明为内部实体还是外部实体。
外部实体分SYSYTEM及PUBLIC两种。SYSYTEM引用本地计算机,PUBLIC引用公共计算机,
外部实体格式如下:

管理实体引用的规则包括:

引用实体前,必须先在XML文档中声明该实体。
实体引用不应含有任空空格。例如:& title; &title;都是不对的。
实体引用的XML文件必须是格式良好的。

一个内部实体声明

语法:

<!ENTITY 实体名称 "实体的值">

例子:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root[
	<!ENTITY x "First">
    <!ENTITY y "Second">
    <!ENTITY writer "Bill Gates">
    <!ENTITY copyright "Copyright W3School.com.cn">
]>
<root>
    <x>&x; </x>
    <y>&y; </y>
    <author>&writer;&copyright;</author>
</root>

一个外部实体声明

语法:

<!ENTITY 实体名称 SYSTEM "URI/URL">

例子:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root[
	<!ENTITY test SYSTEM "test.xml">
]>

<root>&test;</root>

外部参数实体:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root[
	<!ENTITY % param1 "hello">
	<!ENTITY % param2 "woeld">
	<!ENTITY % dtd SYSTEM "./1.dtd">
	%dtd;
]>
<root> content "%param1;%param2;"</root>
posted @ 2020-07-19 10:44  10nnn4R  阅读(131)  评论(0编辑  收藏