首页 文章

XSLT:转换后保留xml标记之间的 Span

提问于
浏览
1

我有一个简单的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(.)) &gt; 0">
        <xsl:apply-templates/>
    </xsl:if>
</xsl:template>

请注意关闭第一个span标记和打开第二个span标记之间的空格 .

目前,此转换的输出给出:

Output

ab

在XSLT中是否有一种方法可以在转换后保留span标记之间的空间 .

Desired Output

a b

尝试在p和span模板匹配标记中指定 xml:space="preserve" . 它只是放了很多空间 .

此外,我的方案不允许我添加一个可以转换为空白空格的占位符标记 .

1 回答

  • 1

    在没有任何其他重写模板的情况下,我希望XSLT的片段能够产生您想要的结果,除非您在样式表的顶层有一个 xsl:strip-space 指令 . 如果您有其中一个声明,那么您应该将其删除,或者至少添加

    <xsl:preserve-space elements="p"/>
    

    特别为 p 元素反击 strip-space .

相关问题