您的位置:首页精文荟萃软件资讯 → xml中的空格之完全解说

xml中的空格之完全解说

时间:2004/10/8 13:14:00来源:本站整理作者:蓝点我要评论(0)

提示:我提取了《xslt从入门到精通》中关于空格解释的核心部分,借以抛砖引玉,希望大家踊跃参与讨论。谈谈你对空格的理解。


只适合对xml文件结构有一定了解的学者,不适合初学者。请按从上至下的顺序阅读。



对html文件而言,空格不重要;然而,对xml而言,默认立场就是要保留空格结点(空格结点的解释见下文)。



根据xml规范的规定,所谓空格是四种字符的任意组合序列:
-----------------------
空格字符(space),对应字符值为 #x20
返回字符(Carriage Return),对应字符值为 #xD
新行字符(Newline),对应字符值为 #xA
跳格字符(Tab),对应字符值为 #x9。


xml文件的空格也会形成结点,也就是空格结点。空格结点属于文字结点类型。


对xml和xslt而言,空格结点会牵涉到两个议题:
-----------------------
1。在xml输入文件中决定哪些空格是重要的,xslt处理器要看见这些空格结点。而决定的密钥就是xml:space属性。
2。在xsl模板文件中决定哪些空格是重要的,xslt处理器应将它复制到结果树中,而决定的密钥就是xsl:strip-space
和xsl:preserve-space这两个命令。



“重要和不重要的空格结点”
-----------------------
若某组件的内容只能放组件,则该组件中的空格结点就是不重要的(Insignificant);
如果某组件的内容是#PCDATA的类型,则其内的空格结点应视为重要的(Signficant)。
至于组件内容混杂了文字内容和组件的情况则无从评判,应视组件及其内容之语意而定。



xslt处理器接触到xml输入文件之前,会先由xml分析器进行分析
-----------------------
(1)xml:space属性可以改变后续接手的xml应用程序处理空格结点的模式,例如,xslt处理器就会受xml:space属性影响。
(2)xml文件中任何一列标记或内容尾端的结尾的结尾符号全部会换成单一新行字符(#xA)。
(3)属性值交给xml应用程序之前,xml分析器也应该先对属性值做规范化的操作。这是因为不同的操作系统每一行文字列的结尾字符有不同的组合,例如,windows系统会由返回字符呵新行字符组成结尾符号,而Unix系统则仅由新行字符组
     成结尾符号。xml分析器在读取xml文件之后,便先行将所有结尾符号换成单一新行字符,不仅统一了不同系统间不同结尾符号设计的差异性,同时也简化了后续xml应用程序的的操作难度。这样一个处理过程称为“规范化(Normalization)”。
 a,每一文字列的结尾符号都要规范化成单一的新行字符(#xA)。
 b,任何一个空格符(#x20、#xD、#xA、#x9)都应换成一个空格字符(#x20)。
 c,属性值中若含有字参码,则应替换成该参考字符,例如,
会换成新行字符(#xA)。
 d,属性值若含有实体参考,则应以其替换文字替换。
 e,除此之外,任何字符都应直接放入规范化属性值中。
 f,最后,如果属性类型不是CDATA,则xml分析器应该再进一步把属性值前后的空格字符序列删除,而且属性值中间若有空格序列,也应该替换成单一空格字符。
   
   
xslt处理器把xml输入文件和xsl模板文件的结构树建好之后,会现把组件中相邻的文字结点合并成单一的文字结点,然后再把一些文字结点抽掉。然而,如果文字结点符合下列条件之一,就会被保留下来:
-----------------------
(1)文字结点的父组件是空格保留组件名称集(Set Of Whitespace-preserving Element Names)中的一员。
(2)文字结点中至少有一个非空格符。
(3)文字结点的某个祖先组件中有xml:space属性,其值为preserve,而且较近的祖先组件中没有其他xml:space属性值为default。除此之外的文字结点逗会被抽掉。



对xsl模板而言,所谓的空格保留组件名称集只有一个xsl:text组件可用。xsl模板文件的空格结点都会被删除,但是,如果空格结点出现在xsl:text组件中就会被保留下来。


 


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本