XML中的空白:空格、制表符与空行 在编辑XML文档时,我们常使用空白(如空格、制表符和空行)来分隔标记,提升代码的可读性。然而,在数据交换过程中,这些为了视觉清晰而添加的空白往往成为冗余信息。不过也存在例外情况,例如诗歌的分行或程序代码的缩进,其中的空白不仅是格式,更是内容的必要组成部分。 XML
在编辑XML文档时,我们常使用空白(如空格、制表符和空行)来分隔标记,提升代码的可读性。然而,在数据交换过程中,这些为了视觉清晰而添加的空白往往成为冗余信息。不过也存在例外情况,例如诗歌的分行或程序代码的缩进,其中的空白不仅是格式,更是内容的必要组成部分。
XML处理器的基本原则是将所有非标记字符完整传递给上层应用程序。如果处理器支持有效性验证,它还会额外通知应用程序哪些空白出现在元素内容中。
那么,当需要明确要求应用程序保留某些空白时,应如何实现?这便引出一个关键属性。
在XML文档中,可通过xml:space属性指示应用程序保留特定元素内的空白字符。
在有效的XML文档中,此属性必须经过声明方可使用。它必须被声明为枚举类型,其取值仅限于"default"和"preserve",或两者皆可。
以下为两个典型声明示例:
此声明为poem(诗歌)元素定义xml:space属性。属性类型为枚举,允许值为"default"或"preserve",且默认值设为'preserve'。这意味着除非特别指定,否则poem元素内的所有空白都将被保留。
另一个示例:
此声明为pre(预格式化文本,常用于代码)元素定义xml:space属性。枚举列表仅包含"preserve"值,并通过#FIXED关键字声明为固定缺省值。这表示该元素的空白处理模式强制为保留,不可更改。
简言之:"default"表示采用应用程序默认的空白处理方式(通常为合并或忽略无关空白);而'preserve'则明确要求应用程序完整保留元素内的空白。
重要规则:若元素设置了xml:space属性,此设置将应用于该元素的所有后代元素,除非后代元素自行定义xml:space属性以覆盖祖先规则。
XML文档中的空白可分为两类:(a) 有效空白与 (b) 无效空白。明确两者区别至关重要。
有效空白通常出现在混合文本与标记的元素内容中。此时空白是内容的一部分,其存在与否会导致语义差异。
对比以下两个元素:
TanmayPatil
与
Tanmay Patil
两者明显不同:前者为“TanmayPatil”(无空格),后者为“Tanmay Patil”(含空格)。任何读取此XML的程序都必须严格区分,此处的空白属于有效空白。
无效空白通常出现在纯标记区域,如标签名或属性名内部。为便于说明,以下用点号(.)表示空白:
或
尽管书写格式不同,但XML解析器视这两个标签完全等价。标签名address.category内部的空白属于无效空白,解析时将被忽略。属性值的空白处理遵循其他规则,但属性名本身的空白同样无效。
这正是xml:space属性的核心应用场景。通过该属性,我们可明确告知应用程序:此元素内的空白(包括通常被视为“无效”的空白)必须予以保留。
完整声明与使用示例如下:
最后重申两个取值的含义:
熟练掌握空白处理机制,尤其是合理运用xml:space属性,能够在XML数据的机器可读性与人类可读性之间实现最佳平衡。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述