在此半规范化代表将新行和 tab 字符转换为空格,但是多个空格不会退化为一个空格。
有些时候,xml 对象模型将显示包含空白字符的 text 节点。空白字符被截断后,多半会带来一些混乱。例如下面的 xml 例子:
]>smith john
生成下列树:
processing instruction: xml doctype: person element: person text: element: lastname text: element: firstname text:
名字和姓氏两边是只包含空白字符的 text 节点,因为“person”元素的内容模型是 mixed;它包含 #pcdata 关键字。mixed 内容模型指定元素之间可以有文本存在。因此,下面的内容也是正确的:
my last name is smith and my first name isjohn
结果是类似于下面的树:
element: person text: my last name is element: lastname text: and my first name is element: firstname text:
如果没有单词“is”之后和
要使只有空白字符的 text 节点消失,请从“person”元素声明中删除 #pcdata 关键字:
结果是下面清晰的树:
processing instruction: xml doctype: person element: person element: lastname element: firstname
xml 声明必须列在 xml 文档的顶部:
它指定下面的项目:
- 该文档是 xml 文档。在丢失或者还没有指定 mime 类型时 mime 探测器可以用它来检测文件是否为类型 text/xml。
- 文档符合 xml 1.0 规范。在以后 xml 有其他版本时这一点很重要。
- 文档字符编码。编码属性是可选的,默认为 utf-8。
注意:xml 声明必须在 xml 文档的第一行,因此下面的 xml 文件:
产生下面的分析错误:
无效的 xml 声明。 行 0000002: 位置 0000007: ------^
注意:xml 声明是可选的。如果需要在顶部指定注释或者处理指令,那么请不要放入 xml 声明。但是,默认的编码将为 utf-8。
在用 dom 从零开始构造文档以产生 xml 文件时,任何内容都在一行上,相互之间没有空格。这是默认的行为。
构造在 internet explorer 5 中的默认 xsl 样式表,以可读格式显示和打印 xml 文档。例如,如果已经安装了 ie5,请尝试查看 nospace.xml 文件。浏览器中应该显示下面的树:
-- xyz 12.56
在 xml 中没有插入空白字符。
打印可读 xml 是非常有趣的,特别是有定义不同类型内容模型的 dtd 时。例如,在混合内容模型 (#pcdata) 下不能插入空格,因为它可能改变内容的含义。比如请考虑下面的 xml:
elephant
这最好不输出为:
e lephant
因为单词边界不再正确。
所有这些都使自动化打印成为问题。如果不需要打印可读 xml,那么可以使用 dom 在适当的位置插入空白字符作为文本节点。
如何在 dtd 中使用名称空间? 要在 dtd 中使用名称空间,请在使用它的元素的 attlist 声明中声明它,如下所示:
名称空间类型必须为 #fixed。属性的名称空间也是这样:
名称空间和 xml 架构
dtd 和 xml 架构不能混合。例如,下面的
xmlns:x cdata #fixed "x-schema:myschema.xml"将不导致使用在 myschema.xml 中定义的架构定义。对 dtd 和 xml 架构的使用是互斥的。
使用下面的 xml 作为例子:
可以按如下方式绑定到 ado 记录集:mark hanson 206 765 4583 jane smith 425 808 1111