声明“非.../既...”类型的内容
例子:
<!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 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。
文本中的标签会被当作标记来处理,而实体会被展开。
不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 实体来分别替换它们。
例:<!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) |