解析XML对代码中的空白处理

所属分类: 网页制作 / XML/XSLT 阅读数: 1765
收藏 0 赞 0 分享

1、在XML规范中,空白包括空格,制表符和空行。在编辑XML文档时,我们常常使用空白来分隔标记,以获得较好的可读性,然而在交互的空白文档中,这些空白就不需要了,但有时候又需要保留这些空白。例如,诗歌和程序代码中的空白,
2、XML处理器总是将文档中不是标记的所有字符都传递给应用程序,一个进行有效性验证的XML处理器会通知应用程序这些字符中的哪一些组成了出现在元素内容中的空白。
3、在XML文档中,可以在元素中使用一个特殊的属性xml:space,来通知应用程序保留此元素中的空白。
4、在有效的文档中,这个属性和其它任何属性一样,在使用时必须声明。Xml:space属性必须被声明为Enumerated(枚举)类型,它的值必须是“default”和“preserve”两者之一,也可两个都取。
例如:
<!ATTLIST poem xml:space (default preserve)’preserve’>
意思是在poem这个元素上声明xml:space这个属性,它的类型是枚举类型,可以取值“default”和“preserve”,且这个属性的默认值是preserve’
<!ATTLIST pre xml:space (preserve)#FIXED ‘preserve’>
意思是在元素pre这个元素上进行声明xml:space属性,类型也是枚举类型,但是它只有一个取值“preserve”,并且用FIXED这个关键字对这个属性进行了缺省声明。声明它有一个默写的缺省值"default"表示对此元素使用应用程序的缺省空白处理模式,‘preserve’指示应用程序保留所有的空白.
5、如果一个元素使用了xml:space属性,将适用于该元素内容中的所有元素,除非被另一个xml:space属性的实例所覆盖。

XML 文档包含两种类型的空白 (a) 有效空白和 (b) 无效空白。下面的例子解释了这两种类型的空白。

有效空白
有效空白通常出现在在元素同时包含文本和标记时。例如:

XML/HTML Code复制内容到剪贴板
  1. <name>TanmayPatil</name>  

XML/HTML Code复制内容到剪贴板
  1. <name>Tanmay Patil</name>  

上面的两个元素是不同的,因为 Tanmay 和 Patil 之间的空白不一样。任何程序读取 XML 文件中的这种元素时都必须保持它们的区别。

无效空白
无效空白意味着只允许在元素内容中出现。例如:

XML/HTML Code复制内容到剪贴板
  1. <address.categoryaddress.category="residence">  

或者

XML/HTML Code复制内容到剪贴板
  1. <address....categoryaddress....category="..residence">  

上面两个例子是一样的。这里,我们通过点号(.)表示空白。在上面的例子中,address 和 category 之间的空白是无效的。

我们还给元素附加一个特殊的属性 xml:space。这表示元素的空白不应该由应用程序移除。我们可以设置这个属性为 default 或者 preserve。正如下面的例子所示:

XML/HTML Code复制内容到剪贴板
  1. <!ATTLIST address xml:space (default|preserve) 'preserve'>  

这里:

值 default 表示这个元素可以接受应用程序的默认空白处理模式。
值 preserve 表示应用程序会保护所有的空白。

更多精彩内容其他人还在看

在XML模式中扩展枚举列表

在列表中添加新值是一种常见而且必要的需求。模式设计者通常希望在系统架构中构建一种添加附加值的方法,并且该附加值在设计阶段是未知的。模式设计者如何创建一个可扩展、易于实现的枚举值列表?本文将介绍几种实现这一目标的方法。 模式设计者和实现人员需要一种扩
收藏 0 赞 0 分享

XML入门教程:XML名称空间-XML/XSLT

XML名称空间表示XML名称的使用范围,因为XML可自定义元素标签,所以有不同XML应用间XML名称重名的机会是很大的。如果没有一种方法来区分不应用的名称,就会造成混乱。XML名称空间就是为了解决这个问题而设计的。通过XML名称空间,我们可以区分
收藏 0 赞 0 分享

XML入门教程:属性声明-XML/XSLT

一个有效的XML文档,必须对元素的属性进行声明。使用ATTLIST声明来完成,一个ATTLIST可以为一个元素类型声明多个属性。 一个有效的XML文档,必须对元素的属性进行声明。使用ATTLIST声明来完成,一个ATTLIST可以为一个元素类型
收藏 0 赞 0 分享

XML入门教程:实体-XML/XSLT

由于数据不是XML格式,所以使用NDATA声明指定数据类型。avi是在NOTATION中定义的MIME媒体类型。在XML中嵌入未析实体很复杂且不规范,尽量不要使用。 实体 用ENTITY声明定义实体。如:
收藏 0 赞 0 分享

XML入门教程:元素声明-XML/XSLT

有效文档中使用的每个元素都必须在文档的DTD中用元素声明进行声明。element_name可是任何合法的XML名称,content_model(内容模型)指定元素可以或必须包含的子元素以及子元素的顺序。下面具体介绍内容模型的内容。 上节文档类型
收藏 0 赞 0 分享

XML入门教程:文档类型声明-XML/XSLT

要使用DTD进行有效性检验,就要使用文档类型定义声明指定DTD。文档类型声明位于XML声明之后,根元素之前。如果dtd文档位于本机,可用路径名直接指出dtd文档的位置。 由于XML可自定义标签,所以每个人定义的标签集都会不同,如
收藏 0 赞 0 分享

XML入门教程:XML语法-XML/XSLT

接着在浏览器中打开index.xml文档,则可显示“Hello World”。上面两个文档都是合法的XML文件,具体的语法规则下面会详细介绍,上例可先给大家一个感性的认识。合法的XML文档可有种意思,一个是良构文档(well-format),即符合XML规则书写的文档
收藏 0 赞 0 分享

xml入门教程:XML是什么-XML/XSLT

XML(eXtensible Markup Language,可扩展标记语言)是SGML的一个子集,但比SGML简单,用以创建可相互转换的结构化文本文档和数据文档。下面说明一下与XML相关的一些概念。 XML(eXtensible Markup L
收藏 0 赞 0 分享

WAP教程(11):WAP论坛和开放移动联盟与论坛-XML/XSLT

WAP 论坛,WAP开放移动联盟,WAP论坛. WAP 论坛 (WAP Forum) 无线应用协议 (WAP) 论坛为数字移动电话和其他无线终端开发了事实上的全球标准。 WAP 论坛发布了开放的全球无线协议规范,此规范基于已有的因特网标准
收藏 0 赞 0 分享

WAP教程(10):WML参考手册、WML实例和WML DTD-XML/XSLT

WAP 协议用于在无线客户端(比如移动电话)上展示因特网内容。 WAP 协议用于在无线客户端(比如移动电话)上展示因特网内容。 Deck / Card 元素
收藏 0 赞 0 分享
查看更多