XML基础及DTD
XML基础及DTD
XML文档结构
1. XML声明
<?xml version=”1.0” standalone=”no” encoding=”gb2312”?>
^ ^ ^
| | |
版本 是否不使用外部声明 编码方式
2. 创建根元素
根元素只能有一个 勇于描述文档功能
<root_name> </root_name>
3. 创建XML代码
开始标签 内容 结束标签
<title> text </title>
|___________________________|
|
元素
注释
<!-- 注释内容 -->
处理指令
<?xml:stylesheet type=”test/xsl”?>
标签的字符数据类型
1. PCDATA 将要通过解析器进行解析的文本
2. CDATA 字符数据
实体
实体是XML的存储单元。克包含短语、文件、数据库记录、字符或其它任何包含数据的项。
预定义实体
< <
> >
& &
" “
&apos ‘
一般实体
内部实体
<!ENTITY entity_name “以实体表示的文本”>
外部实体
<!ENTITY entity_name (SYSTEM|PUBLIC) (文本文件名|外部URI)>
SYSTEM指用于本地计算机 PUBLIC指用于公共计算机
实体的调用
&entity_name;
参数实体
<!ENTITY % entity_name “以实体表示的文本”>
调用
%entity_name;
DTD
内部DTD声明
<!DOCTYPE root_element_name [element_declarations]>
外部DTD声明
<!DOCTYPE root_element_name SYSTEM “dtd_text_name.dtd” [element_declarations]>
元素声明
<!ELEMENT element_name (element_content type)>
空元素
<!ELEMENT element_name (EMPTY)>
带有数据的元素
<!ELEMENT element_name (#CDATA)>
<!ELEMENT element_name (#PCDATA)>
<!ELEMENT element_name (#ANY)>
带有一个或多个子元素
<!ELEMENT element_name (child_element_name, child_element_name … …)>
声明相同元素至少要出现一次
child_element_name
<!ELEMENT element_name (child_name+)>
声明相同元素出现0或N次
<!ELEMENT element_name (child_name*)>
声明相同元素出现0或1次
<!ELEMENT element_name (child_name?)>
声明混合内容
EXP:
<!ELEMENT note (to+, from, header, message*, #PCDATA)>
属性声明
default属性值
<!ATTLIST element_name attribute_name CDATA “默认值”>
EXP:
DTD中:
<!ATTLIST go type CDATA “run”>
XML中:
<go type=”run”>
Implied属性值(可有可无)
<!ATTLIST element_name attribute_name attribute_type #IMPLIED>
Required属性值(一定要有)
<!ATTLIST element_name attribute_name attribute_type #REQUIRED>
Fixed属性值(固定值 使用者不可更改)
<!ATTLIST element_name attribute_name attribute_type #FIXED “VALUE”>
Enumerated属性值(枚举值)
<!ATTLIST element_name attribute_name (eval1|aval2| …) “default_value”>
Id idref idrefs属性值(id标识符)
<!ATTLIST element_name attribute_name ID #IMPLIED>
<!ATTLIST element_name attribute_name IDREF #IMPLIED>
<!ATTLIST element_name attribute_name IDREFS #IMPLIED> 多个值 用空格分开
EXP:
… …
<!ATTLIST topic topicid ID #REQUIRED>
<!ATTLIST topic prev IDREF #IMPLIED>
<!ATTLIST topic next IDREF # IMPLIED>
<!ATTLIST topic xrefs IDREFS # IMPLIED>
… …
<topic topicid=”topic4” prev=”topic3” next=”topic7” xrefs=”topic1 topic2”>
<!--5~6丢失 -->
</topic>
ENTITY ENTITIES属性
EXP:
属性a指向单个未解析实体
<!ATTLIST A a ENTITY #IMPLIED>
属性b指向多个未解析实体
<!ATTLIST A b ENTITIES #IMPLIED>
NMTOKEN NMTOKENS
指定一个或多个任何有效的XML名称
XML名称空间
xmlnm:[prefix]=”URI”