我有一个简单的xml和xsl,如下所示:
的 XML
<p><span>a</span> <span>b</span></p>
的 XSL
<xsl:variable name="output">
<xsl:apply-templates select="//p"/>
</xsl:variable>
<xsl:value-of select="$output" />
<xsl:template match="p">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="span">
<xsl:if test="string-length(normalize-space(.)) > 0">
<xsl:apply-templates/>
</xsl:if>
</xsl:template>
请注意关闭第一个span标记和打开第二个span标记之间的空格。
目前,此转换的输出结果为:
的输出
ab
在XSLT中是否存在一种方法,我们可以在转换后保留span标记之间的空间。
期望输出
a b
尝试在p和span模板匹配标记中指定 xml:space =&#34;保留&#34; 。它只是放了很多空间。
此外,我的方案并未指定我添加可以转换为空白空格的占位符标记。
答案 0 :(得分:1)
在没有任何其他重写模板的情况下,我希望XSLT的片段能够产生您想要的结果,除非您在样式表的顶层有xsl:strip-space
指令。如果你有其中一个声明,那么你应该删除它,或者至少添加
<xsl:preserve-space elements="p"/>
具体针对strip-space
元素的p
。