【问题标题】:XSLT: Retain span between xml tag after transformationXSLT:在转换后保留 xml 标记之间的跨度
【发布时间】:2015-05-12 18:51:37
【问题描述】:

我有一个简单的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 标签的打开之间的空格。

目前这个转换的输出给出:


输出

ab

在 XSLT 中有没有一种方法可以在转换后保留 span 标签之间的空间。


所需的输出

a b

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

另外,我的方案没有让我选择添加可能已翻译为空白空格的占位符标签。

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

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

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

    专门针对p 元素取消strip-space

    【讨论】:

    • 您说的完全正确,在我没有注意到的代码之间有一个全局条带空间。你的建议确实有帮助。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2010-12-02
    相关资源
    最近更新 更多