dtd 文件解析

来源:互联网 发布:单片机软件工程师具备 编辑:程序博客网 时间:2024/05/04 10:28

声明“非.../既...”类型的内容

例子:

<!ELEMENT note (to,from,header,(message|body))>

上面的例子声明了:"note" 元素必须包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。

声明混合型的内容

例子:

<!ELEMENT note (#PCDATA|to|from|header|message)*>

上面的例子声明了:"note" 元素可包含出现零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。



//----------------------------------------------------------------

混合型的内容写出来的xml可以是



<note>

<to></to>

<from></from>

<header></header>

<header></header>

woliuqiba

</note>


解析:

<!ELEMENT note (#PCDATA|to|from|header|message)*>
可以写成:
<!ELEMENT note (#PCDATA|to|from|header|message),(#PCDATA|to|from|header|message),..> 0个到多个都可以

#PCDATA表示可以写入存文本,不带子标签,例:

<!ELEMENT type (#PCDATA)>

<type>woliuqita</type>



PCDATA

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

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

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

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

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


例:<!ELEMENT columns (#PCDATA|column)*>


CDATA

CDATA 的意思是字符数据(character data)。使用时要加#,写在<!ELEMENT中

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

例:<!ELEMENT columns (#CDATA|column)*>

这里的CDATA指的是XML 元素的开始标签与结束标签之间的文本。


不是标签中属性的CDATA,下面是元素标签中的属性CDATA。使用时不加#,写在<!ATTLIST中

例:<!ATTLIST sortitem weight CDATA #IMPLIED>

类型描述CDATA值为字符数据 (character data)


0 0