我有一个简单的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标记之间的空格 .
目前,此转换的输出给出:
Output
ab
在XSLT中是否有一种方法可以在转换后保留span标记之间的空间 .
Desired Output
a b
尝试在p和span模板匹配标记中指定 xml:space="preserve" . 它只是放了很多空间 .
此外,我的方案不允许我添加一个可以转换为空白空格的占位符标记 .
1 回答
在没有任何其他重写模板的情况下,我希望XSLT的片段能够产生您想要的结果,除非您在样式表的顶层有一个
xsl:strip-space
指令 . 如果您有其中一个声明,那么您应该将其删除,或者至少添加特别为
p
元素反击strip-space
.