共计 1606 个字符,预计需要花费 5 分钟才能阅读完成。
大家好,小乐又来了,好久不见!这次接着上次可扩展标记语言 XML 之一:XML 概念,作用,示例,继续讲述 XML。
一、格式良好的 xml
1、语法规范:
1)、必须有 XML 文档声明:
<?xml version="1.0"?> | |
<?xml version="1.0" encoding="UTF-8"?> | |
<?xml version="1.0" standalone="yes"?> | |
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> |
说明:
XML standalone 定义了外部定义的 DTD 文件的存在性. standalone element 有效值是 yes 和 no. 如下是一个例子:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |
<!DOCTYPE s1 PUBLIC "http://www.ibm.com/example.dtd" "example.dtd"> | |
<s1>.........</s1> |
值 no 表示这个 XML 文档不是独立的而是依赖于外部所定义的一个 DTD. 值 yes 表
示这个 XML 文档是自包含的 (self-contained).
注意文本文件保存时候默认的编码格式是 ANSI,需用记事本把它手动改为 UTF- 8 保存。
2)、必须有且仅有一个根元素
3)、严格区分大小写
4)、属性值用引号 (双引号或单引号) : 等号分开的名称 - 值对;在一个元素上,相同的属
性只能出现一次
5)、标记成对;
6)、空标记关闭;
7)、元素正确嵌套。
2、元素命名规则
1)、名称中可以包含字母、数字或者其他可见字符;
2)、名称不能以数字开头;
3)、不能以 XML/xml/Xml…开头;
4)、名称中不能含空格;
5)、名称中不能含冒号(注:冒号留给命名空间使用)
3、实体
实体叫 ENTITY,实体的作用是避免重复输入。作用相当于宏或者变量。
1) 内置的 5 种实体
实体 符号
< <
& &
” “
‘ ‘
2) 自定义实体
<!DOCTYPE 根元素 [ | |
<!-- 实体声明 --> | |
<!ENTITY 实体名 "实体内容"> | |
]> | |
使用已定义的实体:& 实体名; | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE sxt[ | |
<!-- 实体声明 --> | |
<!ENTITY xm "明明"> | |
<!ENTITY gen "保密"> | |
]> | |
<sxt> | |
<teacher> | |
<name> 明明 </name> | |
<gender> 保密 </gender> | |
</teacher> | |
<!-- 引用实体的方法 --> | |
<teacher> | |
<name>&xm;</name> | |
<gender>&gen;</gender> | |
</teacher> | |
</sxt> |
4、文档类型声明
文档类型定义——DOCTYPE,文档类型声明,紧跟 XML 声明之后,包含所有实体声明
<?xml version="1.0" encoding="utf-8"?> | |
<!DOCTYPE 根元素标记名 [<!-- 实体声明 -->]> |
二、XML 文档组成
1、构成
所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:
元素
属性
实体
PCDATA
CDATA
CDATA 节(character data)
2、CDATA
用于把整段文本解释为纯字符数据而不是标记的情况。如包含大量的 <、>、&、或者 ”
字符。CDATA 节中的所有字符都会被当做元素字符数据的常量部分,而不是 XML 标记,
可以输入除 ]]> 外任意字符,不能嵌套。
<![CDATA[ ……]]>
3、PCDATA
PCDATA 的意思是被解析的字符数据(parsed character data)。可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。
PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。
文本中的标签会被当作标记来处理,而实体会被展开。
不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、< 以及 >
的内置实体来分别替换它们。