XML 将以下四种字符归为空白字符 WhiteSpace :回车符(\r 或 ch(13))、换行符(\n 或 ch(10))、制表符 (\t) 以及空格 (' ')。

在 XML 文档中,空白字符分为两类:有意义空白字符 是文档内容的一部分,应予以保留。无意义空白字符 在编辑 XML 文档时使用,以增加可读性。这些空白字符一般在文档交付时不予保留。


默认情况,WhiteSpace是 DOM_Document的子节点,类型是DOM_Text,所以 XML的空白问题只是针对文本元素DOM_Text,对于元素的属性没有影响


1.xml

<AddBook>

 <Name/>

 <Mobile/>

</AddBook>

wKioL1g74DPSu0_WAAATAzWmNPM747.gif

根节点的子节点数为 5 ( 错误 )



2.xml

<AddBook><Name/><Mobile/></AddBook>

wKiom1g74DLgup0AAAAMibz5Y4o044.gif

根节点的子节点数为 2 ( 正确 )


W3C XSLT 规范提供了 xsl:strip-space()函数, 删除空白字符文本节点 (即文本节点完全由空白字符组成)的 XML文本元素。

W3C XSLT 还提供 xsl:normalize-space() 函数,将包含多个空白字符的XML文本元素转换为 一个空白字符 的XML文本元素。


举例:

<?xml version="1.0" encoding="GB2312" standalone="yes" ?>

<Class name="计算机软件班" id="001">

   <Students>

<!-- 注释:student: 张      三 -->

       <student name="张      三" studentNo="13031001" sex="男" age=22 >

           <电话> 8820     8888 </电话>

           <address> 西安市太    白南路二号 </address>

       </student>


       <student name="李四" studentNo="13031002" sex="男" age="20">

           <phone>88206666</phone>

           <address>西安市光华路</address>

       </student>


   </Students>

</Class>



注意事项:

(1)属性值 加引号是 字符串 否则是数字, 参考age

(2)<电话> 8820     8888 </电话> 这个是 文本Node, 如果使用了 空格压缩 机制, 输出为 8820 8888 多个空格合并成一个, 属性名称不受影响, 参考name="张      三"