XSLT中的空白节点

时间:2013-03-06 11:01:50

标签: xml xslt

我正在阅读Michael Kay撰写的 XSLT 2.0和XPath 2.0 一书。我已经完成了白色空间节点的主题。在这个主题中,给出了一个例子。

<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>元素的开头和<employer>元素的结尾
  • <zip>元素和</place-of-work>的结尾。
  • </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>之间的空白节点。为什么呢?

1 个答案:

答案 0 :(得分:0)

  

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

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