我正在转换HTML-> FO。 我需要保留两个之间的空间
<var>
标签,是
的子级
<span>
当我在xsl中输入以下内容时:
xsl:strip-space elements =“ *”->删除
周围的所有空格xsl:preserve-space elements =“ span”->在其他数据场景中也保留所有冗余空间,这些空间不一定在标记之间。
我需要保留仅在 var 之间的空间。
HTML:
<span style="font-size:11pt;font-family:""">DATED: <var name="DATE"/> DAY of <var name="DAY"/> <var name="YEAR"/></span>
我正在之间失去空白
<var name="DAY"/>LOST_space<var name="YEAR"/>
XSL:
<xsl:strip-space elements="*"/>
<!--xsl:preserve-space elements="span"/-->
<xsl:template match="span">
<fo:inline height="0pt" font-family="abc" white-space-collapse="false" font-size="11pt" text-decoration="inherit">
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<xsl:template match="var">
<xsl:variable name="defaultSystemValue">_________</xsl:variable>
<xsl:value-of select="$defaultSystemValue"/>
</xsl:template>
输出:
<?xml version = '1.0' encoding = 'UTF-8'?>
<fo:inline height="0pt" font-family="abc" white-space-collapse="false" font-size="11pt" text-decoration="inherit" xmlns:fo="http://www.w3.org/1999/XSL/Format">DATED: _________ DAY of __________________</fo:inline>
期望: 日期:_________ ___________________天
电流输出: 日期:________________天
答案 0 :(得分:0)
由于您知道它会发生,因此请在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>