本文介绍了xslt 带有 2 个具有相同结构和多个级别的不同

问题描述

我有 2 个法语和英语的 /

的问题

XSLT

<xsl:apply-templates select="./group-container";模式=二级"/></xsl:模板><xsl:template match="group-container";模式=第一级"><xsl:variable name="pos";选择=位置()"/><div><span data-webanalytics="menunavigation.{document($en-

</xsl:模板><xsl:template match="group-container";模式=第二级"><div class="second-level-inner"><xsl:apply-templates select="group-title";模式=标题"/>

</xsl:模板><xsl:template match="group-title";模式=标题"><xsl:variable name="pos1";选择=位置()"/><h5><xsl:value-of select="title-name";/><span data-webanalytics="menunavigation.{document($en-

预期输出

<div><span data-webanalytics="menunavigation.Accounts"><span>计算</span></span>

<div><span data-webanalytics="menunavigation.Payments"><span>Paiements</span></span>

<div><span data-webanalytics="menunavigation.Cards"><span>Cartes</span></span>

<div class="second-level-inner"><h5>Consulter des Comptes</h5><span data-webanalytics="menunavigation.open new account"/><h5>计算</h5><span data-webanalytics="menunavigation.linked accounts"/>

<div class="second-level-inner"><h5>历史</h5><span data-webanalytics="menunavigation.History"/><h5>Nouveau compte</h5><span data-webanalytics="menunavigation.New Payment"/>

<div class="second-level-inner"><h5>Créer un virement</h5><span data-webanalytics="menunavigation.Make a Payment"/><h5>病毒</h5><span data-webanalytics="menunavigation.statement"/>

我可以使用 position() 获得第一级/成功.但是我已经失去了二级位置.

解决方案

您需要将外部位置作为参数传递,例如

<xsl:variable name="pos";选择=位置()"/><div class="second-level-inner"><xsl:apply-templates select="group-title";模式=标题"><xsl:with-param name="pos";选择=$pos"隧道=是"/></xsl:apply-templates>

</xsl:模板>

加上

<xsl:param name="pos";隧道=是"/><xsl:variable name="pos1";选择=位置()"/><h5><xsl:value-of select="title-name";/><span data-webanalytics="menunavigation.{document($en-

除了传递外部位置,您还可以选择传递 document($en- 并使用它.

I have 2 <group-title>/<title-name>

<?

<?

XSLT

<xsl:variable name="en-

Expected output

<div class="first-level-inner">
    <div>
        <span data-webanalytics="menunavigation.Accounts">
            <span>Comptes</span>
        </span>
    </div>
    <div>
        <span data-webanalytics="menunavigation.Payments">
            <span>Paiements</span>
        </span>
    </div>
    <div>
        <span data-webanalytics="menunavigation.Cards">
            <span>Cartes</span>
        </span>
    </div>
</div>
<div class="second-level-inner">
    <h5>Consulter des comptes</h5>
    <span data-webanalytics="menunavigation.open new account"/>
    <h5>Comptes</h5>
    <span data-webanalytics="menunavigation.linked accounts"/>
</div>
<div class="second-level-inner">
    <h5>Historique</h5>
    <span data-webanalytics="menunavigation.History"/>
    <h5>Nouveau compte</h5>
    <span data-webanalytics="menunavigation.New Payment"/>
</div>
<div class="second-level-inner">
    <h5>Créer un virement</h5>
    <span data-webanalytics="menunavigation.Make a Payment"/>
    <h5>Virements</h5>
    <span data-webanalytics="menunavigation.statement"/>
</div>

I can get the first level / successfully with position(). However I'm lost with second level position.

解决方案

You need to pass the outer position on as a parameter e.g.

<xsl:template match="group-container" mode="second-level">
    <xsl:variable name="pos" select="position()"/>
    <div class="second-level-inner">
        <xsl:apply-templates select="group-title" mode="title">
           <xsl:with-param name="pos" select="$pos" tunnel="yes"/>
         </xsl:apply-templates>
    </div>
</xsl:template>

plus

<xsl:template match="group-title" mode="title">
    <xsl:param name="pos" tunnel="yes"/>
    <xsl:variable name="pos1" select="position()"/>
    <h5>
        <xsl:value-of select="title-name" />
    </h5>
    <span data-webanalytics="menunavigation.{document($en-

Instead of passing the outer position on you could also opt to pass the document($en- and use that.

这篇关于xslt 带有 2 个具有相同结构和多个级别的不同

11-02 19:09