XSL - 检查第一个列表项是否是 <br /> 标签
XSL - check if the first listitem is a <br /> tag
这是我的 .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>
亲切的问候
你现在的表情是这样的...
<xsl:when test=".//list/listitem[1]/[*node*]">
但是您此时定位在 listitem
上,因此该表达式将查找当前 listitem
的后代 list
项,但什么也找不到。
试试这个....
<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>
这是我的 .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>
亲切的问候
你现在的表情是这样的...
<xsl:when test=".//list/listitem[1]/[*node*]">
但是您此时定位在 listitem
上,因此该表达式将查找当前 listitem
的后代 list
项,但什么也找不到。
试试这个....
<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>