2013-03-06 80 views
1

我正在阅读Michael Kay的书籍XSLT 2.0和XPath 2.0。我已经经历了空白节点的话题。在这个话题中给出了一个例子。XSLT中的空白节点

<person> 
    <name>Prudence Flowers</name> 
    <employer>Lloyds Bank</employer> 
    <place-of-work> 
    71 Lombard Street 
    London, UK 
    <zip>EC3P 3BS</zip> 
</place-of-work> 
</person> 

在上述XML中存在几个文本节点。

  • <name>元素开始和<person>元素结束之间。所述<name>
  • 启动和所述<employer>元件
  • <place-of-work>元件和<zip>元件和</place-of-work><employer>元件
  • 结束的端部的开始的结束。
  • </place-of-work>元件和</person>元件

如果下面的样式表是转换的XML样式表。

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:strip-space elements="person"/> 
</xsl:stylesheet> 

然后我的问题是,如果我执行上述XSLT文件的也不会剥离<zip>元件和</place-of-work>的端部之间的空白节点。为什么?

回答

0

那么我的问题是,如果我执行上面的XSLT文件,它不会剥离Zip元素的末端和</place-of-work>之间的空白节点。为什么?

因为该文本节点的父是place-of-work元件,而不是person元件,并且place-of-work不是已指定作为strip-space的元素之一。 <person><name>之间的空白文本节点以及</name><employer>之间的空白文本节点是person元素的直接子节点,因此它们将被剥离。

+0

在这种情况下,如果我指定,那么它必须删除该文本节点以及对吗? – Beast 2013-03-06 12:08:08

+0

@Beast yes,''会告诉它删除整个文档中的所有空白文本节点(除非有更具体的'xsl:preserve-space'指令) 。 – 2013-03-06 12:33:16

+0

其实我误解了书中提到的陈述。感谢澄清budy。 – Beast 2013-03-06 13:01:33