首页 > 解决方案 > 如何在xslt中的元素之间找到一个空格

问题描述

我想删除第 4 段中的额外空格。它是由我编写的 XSLT 引入的。

下面给出了 XML 和 XSLT 输出。

<Chapter>
<para>A <emphasis>B</emphasis> <emphasis>C</emphasis> <emphasis>N</emphasis> D</para>
<para>A <emphasis>B</emphasis> <emphasis>C</emphasis> <emphasis>N</emphasis> D</para>
<para>A <emphasis>B</emphasis> <emphasis>C</emphasis> <emphasis>N</emphasis> D</para>
<para>A <emphasis>B</emphasis><emphasis>C</emphasis> <emphasis>N</emphasis> D</para>
</Chapter>

给定下面的 XSLT 代码:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="para" />
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="para">
<p><xsl:apply-templates/></p>
</xsl:template>
<xsl:template match="emphasis">
<b><xsl:apply-templates/></b>
<xsl:if test="self::emphasis/following::text()[starts-with(., ' ')] and following-sibling::node()[1][self::emphasis]"><xsl:text> </xsl:text></xsl:if>
</xsl:template>
</xsl:stylesheet>

预期输出:

<p>A <b>B</b> <b>C</b> <b>N</b> D</p>
<p>A <b>B</b> <b>C</b> <b>N</b> D</p>
<p>A <b>B</b> <b>C</b> <b>N</b> D</p>
<p>A <b>B</b><b>C</b> <b>N</b> D</p>

我知道问题出在 XSLT 中给出的条形空间上,这就是为什么在这些元素之间删除了空格。我试图克服这些元素之间的空间和给定空间。尽管如此,在B之后的第 4 段中添加了一个额外的空格。任何人都知道如何删除不需要的空间或现有的任何解决方案以在这些元素之间留出空间。

标签: xslt

解决方案


推荐阅读