Xml 即使在<;xsl:strip-space-elements="*&引用/&燃气轮机;应用于顶部
我正在转换HTML-->FO。 我需要在两个房间之间保留空间Xml 即使在<;xsl:strip-space-elements="*&引用/&燃气轮机;应用于顶部,xml,xslt,xpath,xslt-2.0,Xml,Xslt,Xpath,Xslt 2.0,我正在转换HTML-->FO。 我需要在两个房间之间保留空间 既然您知道这是可能发生的,那么在XSLT中通过在需要时添加空格来解决它 您可以在已有的模板中添加xsl:if。由于您使用的是XSLT 2.0和xsl:next match将在当前样式表中找到模板(与XSLT 1.0不同),因此您可以选择为第二个var创建单独的模板: <xsl:template match="var[preceding-sibling::node()[1][self::var]]"> <xsl:
既然您知道这是可能发生的,那么在XSLT中通过在需要时添加空格来解决它
您可以在已有的模板中添加xsl:if
。由于您使用的是XSLT 2.0和xsl:next match
将在当前样式表中找到模板(与XSLT 1.0不同),因此您可以选择为第二个var
创建单独的模板:
<xsl:template match="var[preceding-sibling::node()[1][self::var]]">
<xsl:text> </xsl:text>
<xsl:next-match />
</xsl:template>
既然您知道这是可能发生的,那么在XSLT中通过在需要时添加空格来解决它 您可以在已有的模板中添加
xsl:if
。由于您使用的是XSLT 2.0和xsl:next match
将在当前样式表中找到模板(与XSLT 1.0不同),因此您可以选择为第二个var
创建单独的模板:
<xsl:template match="var[preceding-sibling::node()[1][self::var]]">
<xsl:text> </xsl:text>
<xsl:next-match />
</xsl:template>
xsl:strip space/preserve space与您找到的控件相比,没有更细粒度的控件。因此,我想您需要在span
元素和不包含var
的元素上保留空间(例如span[not(var)]
)您可能希望应用模板来删除不需要的文本节点中的空白。没有比您找到的xsl:strip space/preserve space
更细粒度的控件。因此,我想您需要在span
元素上保留空间,对于那些不包含var
(例如span[not(var)]
)的元素,您可能希望应用模板来删除不需要的文本节点上的空白。谢谢Tony,但是这里var之间的数据是用户的数据,可以有空间,也可以没有空间。我的问题是,只有当带状空间可能会忽略空白数据时,才保留空白,这种情况正在发生。我认为在变量之间添加空格是不可取的。如果var
之间有非空格文本,那么谓词将为false,模板将不被使用。同样,如果在当前模板中使用了
。(如果您停止使用xsl:strip space
,那么这个答案对您没有任何用处。)对,但如果用户没有在变量之间放置空格,我将在输出中在变量之间添加空格。你建议在这之后再加一张支票吗?对不起,是的。从你的问题来看,(对我来说)这种可能性并不明显。没有什么需要检查的了,因为XSLT无法判断原始文件中的var
之间是否存在空格。下一个想法是在span
中保留空间,并有一个模板,根据上下文对纯空白文本节点做正确的处理。我只是调整了代码的位置并做了一些修改(规范化空间(.)=“”),它开始工作,请检查以下代码,并分享您对此的看法。谢谢Tony,但是var之间的数据是用户的数据,可以有空间也可以没有空间。我的问题是,只有当带状空间可能会忽略空白数据时,才保留空白,这种情况正在发生。我认为在变量之间添加空格是不可取的。如果var
之间有非空格文本,那么谓词将为false,模板将不被使用。同样,如果在当前模板中使用了
。(如果您停止使用xsl:strip space
,那么这个答案对您没有任何用处。)对,但如果用户没有在变量之间放置空格,我将在输出中在变量之间添加空格。你建议在这之后再加一张支票吗?对不起,是的。从你的问题来看,(对我来说)这种可能性并不明显。没有什么需要检查的了,因为XSLT无法判断原始文件中的var
之间是否存在空格。下一个想法是在span
中保留空间,并有一个模板,根据上下文对纯空白文本节点做正确的处理。我只是调整了代码的位置并做了一些修改(规范化空间(.)=“”),它开始工作,请检查以下代码,并分享您对此的看法。 _________