这是我的.xml文件
<list type="point">
<listitem>
<text>
<br/>
<br/>
.
.
.
</text>
</listitem>
</list>
这里是我的.xsl文件
<xsl:template match="list/listitem">
<fo:list-item>
<fo:list-item-body start-indent="body-start()">
<fo:block>
<xsl:choose>
<xsl:when
test=".//list/listitem[1]/[*node*]">
 
<xsl:apply-templates />
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates />
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</xsl:template>
在这里我的问题:是否有可能在test=[*node*]
检查节点是否中断?因为如果有休息我想添加一个空白,如果不是只是应用其他模板而没有空白。
我已经尝试过检查节点是否为空,但可能还有其他空节点。
结果应该是这样的:
<fo:list-block provisional-label-separation="15px" provisional-distance-between-starts="10px">
<fo:list-item>
<fo:list-item-body start-indent="body-start()">
<fo:block>
<fo:block space-before="6pt" space-after="3pt">
 
<fo:block>\r\n</fo:block>
<fo:block>\r\n</fo:block>
</fo:block>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
亲切的问候
答案 0 :(得分:1)
你当前的表达是这个......
<xsl:when test=".//list/listitem[1]/[*node*]">
但此时您已定位在listitem
上,因此此表达式将查找当前list
的后代listitem
项,并且不会找到任何内容。
试试这个......
<xsl:when test="not(preceding-sibling::listitem) and */br">
或者,您可以尝试将表达式简化为此....
<xsl:when test="position() = 1 and */br">
但您可能需要确保明确选择listitem
元素以确保正确计算position()
。例如....
<xsl:template match="list">
<xsl:apply-templates select="listitem" />
</xsl:template>