2011-12-29 81 views
1

我做一个很简单的XSLT像一个源节点:为什么我得到不同的输出运行xslt?

<p> 
     <media type="photo" id="lr002662" rights="licensed"> 
      <title>Logging in Canada</title> 
     </media>Logging is cutting down trees for <definition> 
      <word-term>lumber</word-term> 
      <word-definition>wood</word-definition> 
     </definition>. Loggers are also called <i>lumberjacks.</i> 
    </p> 

我正在我的XSLT样式表这个源节点,一旦XMLSpy的,我得到了以下的输出:

<para> 
     <media type="photo" source="lr002662" rights="licensed"> 
      <resource.title>Logging in Canada</resource.title> 
     </media>Logging is cutting down trees for <italic>lumber</italic> (wood). Loggers are also called <italic>lumberjacks.</italic> 
    </para> 

但后来我在使用相同的XSLT样式表文件saxon9he.jar命令行运行它,我得到了以下内容:

 <para> 
     <media type="photo" source="lr002662" rights="licensed"> 
      <resource.title>Logging in Canada</resource.title> 
     </media>Logging is cutting down trees for 
      <italic>lumber</italic> 
      (wood) 
     . Loggers are also called <italic>lumberjacks.</italic> 
    </para> 

正如你所看到的,文本后呃媒体标签现在包含如此多的回车符,而这不是我想要的。我一直在使用XMLSpy,所以从未注意到这个问题。任何专家都可以提出调试或提供我的xslt的方法吗?

回答

1

换行符在源代码中存在,所以我希望它们出现在转换的输出中,除非它们被专门删除。您可以通过去除所有空格,只有文本节点:

<xsl:strip-space elements="*"/> 

这应该是在你的样式表的顶层(如根xsl:stylesheet元素的子元素)。

+0

更确切地说,不是“其他空间”,而是任何只有空白的文本节点。 – 2011-12-29 21:56:19

+0

@谢谢你,你知道为什么它在XMLSpy中正确显示吗? – Kevin 2011-12-29 21:57:13

+0

@DimitreNovatchev - 确实。更新。 – 2011-12-29 22:18:56

3

的差异是由于XML文档中the manner in which the Altova XML processor handles whitespace in mixed content.

空白

默认情况下,从边界空白只节点在源XML的Altova的XSLT 2.0引擎条所有边界空白 文件。删除此空白将影响fn:position(), fn:last(),fn:count()fn:deep-equal()函数返回的值。有关更多 的详细信息,请参阅XPath 2.0中的Whitespace-only Nodes in XML Document 和XQuery 1.0函数部分。

AltovaXML条具有空格只内容元素之间的“边界空白”文本节点:

边界空白仅文本节点是发生儿童只有空白文本 节点内部元素之间的两个元素之间的内容。

由于lwburk建议在他的回答,您可以通过添加指示其他处理器做同样的下列到您的样式表:

<xsl:strip-space elements="*"/> 

但是,你不能获得AltovaXML保留空间because they have not implemented xsl:preserve-space or xsl:strip-space并且会一直剥离它们。

+0

+1 - 很好的答案。 – 2011-12-30 00:24:30

+0

感谢您的提示 - 遇到同样的问题。 – 2013-03-07 15:39:56

相关问题