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*]">
                        &#160;
                        <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">
                            &#160; 
                            <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>