以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  在 XML 对象模型中如何处理空白字符?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=8918)


--  作者:diy930
--  发布时间:7/21/2004 1:50:00 PM

--  在 XML 对象模型中如何处理空白字符?
有些时候,XML 对象模型将显示包含空白字符的 TEXT 节点。空白字符被截断后,多半会带来一些混乱。例如下面的 XML 例子:

<?xml version="1.0" ?>
<!DOCTYPE person [
  <!ELEMENT person (#PCDATA|lastname|firstname)>
  <!ELEMENT lastname (#PCDATA)>
  <!ELEMENT firstname (#PCDATA)>
]>
<person>
  <lastname>Smith</lastname>
  <firstname>John</firstname>
</person>

生成下列树:

Processing Instruction: xml
DocType: person
ELEMENT: person
 TEXT:
 ELEMENT: lastname
 TEXT:
 ELEMENT: firstname
 TEXT:

名字和姓氏两边是只包含空白字符的 TEXT 节点,因为“person”元素的内容模型是 MIXED;它包含 #PCDATA 关键字。MIXED 内容模型指定元素之间可以有文本存在。因此,下面的内容也是正确的:

<person>
My last name is <lastname>Smith</lastname> and my first name is
<firstname>John</firstname>
</person>

结果是类似于下面的树:

ELEMENT: person
 TEXT: My last name is
 ELEMENT: lastname
 TEXT: and my first name is
 ELEMENT: firstname
 TEXT:

如果没有单词“is”之后和 <lastname>之前的空白字符,以及 </lastname>之后和单词“and”之前的空白字符,那么句子便无法理解。因此,对于 MIXED 内容模型来说,文字组合、空白字符和元素都是相关的。对于非 MIXED 内容模型来说则不是这样。

要使只有空白字符的 TEXT 节点消失,请从“person”元素声明中删除 #PCDATA 关键字:

<!ELEMENT person (lastname,firstname)>

结果是下面清晰的树:

Processing Instruction: xml
DocType: person
ELEMENT: person
 ELEMENT: lastname
 ELEMENT: firstname


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
29.297ms