xml中的空格之完全解说
《XSLT从入门到精通》中关于空格的
在XML文件时,空格的处理是一个不可忽视的环节。对于HTML文件来说,空格并不显得那么重要,但对于XML而言,空格的处理具有独特的规则和意义。在理解这些规则之前,我们首先要明白XML规范所定义的“空格”。这里的空格不仅仅是常见的空白字符,还包括四种字符的任意组合序列:空格字符(x20)、返回字符(xD)、新行字符(xA)以及跳格字符(x9)。这些空格字符在XML文件中会形成所谓的“空格结点”,属于文字结点类型。
对于XML和XSLT来说,空格结点涉及两个核心议题:
1. 在XML输入文件中,哪些空格是重要的,哪些是不重要的?对于这个问题,XSLT处理器需要根据xml:space属性来判断哪些空格结点是重要的。
2. 在XSL模板文件中,应如何决定哪些空格是重要的,以便在XSLT处理器生成结果树时保留下来?这里涉及到xsl:strip-space和xsl:preserve-space两个命令的使用。
那么,如何判断一个空格结点是重要的还是次要的?这要看它所处的组件内容类型。如果组件的内容只能包含组件本身,那么这个组件中的空格结点就是次要的;但如果组件的内容是PCDATA类型,那么其内部的空格结点就是重要的。对于那些内容混杂了文字内容和组件的情况,就需要根据组件及其内容的语义来判断。
在XSLT处理器接触到XML输入文件之前,XML分析器会先对文件进行一系列处理,包括规范化操作。在这个过程中,xml:space属性起着关键作用,它会影响后续接手处理的XSLT处理器对空格结点的处理方式。除此之外,XML分析器还会对所有标记或内容尾端的结尾符号进行规范化,将它们转换成单一的新行字符(xA)。这一处理过程不仅统一了不同系统间结尾符号的差异,也简化了后续XML应用程序的操作难度。
XSLT处理器在构建完XML输入文件和XSL模板文件的结构树之后,会对文字结点进行合并和删除操作。符合一定条件的文字结点会被保留下来,例如,它的父组件是空格保留组件名称集的一员,或者文字结点中至少有一个非空格符,或者它的某个祖先组件中有xml:space属性且值为preserve。除此之外的文字结点都会被删除。对于XSL模板而言,唯一的空格保留组件是xsl:text组件。也就是说,如果空格结点出现在xsl:text组件中,它就会被保留下来。
通过对这些规则的深入理解和应用,我们可以更加精准地控制XSLT在处理XML文件时的空格处理方式,从而实现更为精确的XML文件转换和处理。
编程语言
- xml中的空格之完全解说
- 使用PHP生成二维码的方法汇总
- 用asp实现网页调用doc附Response.ContentType 详细列表
- JS的框架Polymer中的dom-if和is属性使用说明
- 最全的常用正则表达式大全——包括校验数字、
- 生成随机字符串和验证码的类的PHP实例
- 通过Jquery.cookie.js实现展示浏览网页的历史记录超
- react+redux仿微信聊天界面
- 详解PHP中的8个魔术常量
- phpStorm2020 注册码
- PHP中COOKIES使用示例
- 简单的js计算器实现
- PHP获取文件扩展名的方法实例总结
- 解决layui上传文件提示上传异常,实际文件已经上
- 去除php注释和去除空格函数分享
- javascript实现详细时间提醒信息效果的方法