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的存储单元。克包含短语、文件、数据库记录、字符或其它任何包含数据的项。

 

预定义实体

&lt;                       <

&gt;                      >

&amp;                   &

&quot                   

&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+)>

 

声明相同元素出现0N

<!ELEMENT  element_name  (child_name*)>

 

声明相同元素出现01

<!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”

posted @ 2008-10-02 15:47  Edward Xie  阅读(263)  评论(0编辑  收藏  举报