Xml 如何根据元素在XSLT中的位置将数字添加为元素的属性?

Xml 如何根据元素在XSLT中的位置将数字添加为元素的属性?,xml,xslt,Xml,Xslt,我有一本长诗集,我想用一个属性来存储它们的位置,每五行对一首诗进行编号 输入: <lg> <l>Tú, que del sacro artífice del oro,</l> <l>científica y hermosa, procediste,</l> <l>Circe, que al blanco cisne, al rubio toro,</l&

我有一本长诗集,我想用一个属性来存储它们的位置,每五行对一首诗进行编号

输入:

<lg>
           <l>Tú, que del sacro artífice del oro,</l>
           <l>científica y hermosa, procediste,</l>
           <l>Circe, que al blanco cisne, al rubio toro,</l>
           <l>en variedad de formas excediste,</l>
           <l>de la excelencia del castalio coro</l>
           <l>la humilde musa de mis versos viste;</l>
           <l>harás que las corrientes del Leteo</l>
           <l>presuman otra vez que canta Orfeo.</l>
        </lg>
        <lg>
           <l>Tú, que pudiste dar con imperiosa</l>
           <l>voz (que tembló sin resistencia alguna</l>
           <l>el sol en su corona luminosa</l>
           <l>y en su argentado cóncavo la luna)</l>
           <l>naturaleza no, mas prodigiosa</l>
           <l>forma a la humana que corrió fortuna</l>
           <l>en el tirreno mar, con nueva forma</l>
           <l>en platónico cisne me transforma.</l>
        </lg>

圣城奥罗艺术节,
古希腊哲学家埃莫萨,
Circe,que al-blanco cisne,al-rubio toro,
各种形式的超越,
卡斯塔利奥科罗酒店
我的朋友们;
哈拉斯·库里恩特斯·德尔·莱托酒店
普雷斯曼·奥特拉·维兹·卡塔·奥菲。
这是一个不和谐的世界
阿尔古纳抵抗运动
太阳光日冕
y en su argentado cóncavo la luna)
不,我是神童
科里福图纳人形酒店
蒂里诺三月,新形式
尼科顺铂是一种变革。
期望输出:

<lg>
               <l>Tú, que del sacro artífice del oro,</l>
               <l>científica y hermosa, procediste,</l>
               <l>Circe, que al blanco cisne, al rubio toro,</l>
               <l>en variedad de formas excediste,</l>
               <l n="5">de la excelencia del castalio coro</l>
               <l>la humilde musa de mis versos viste;</l>
               <l>harás que las corrientes del Leteo</l>
               <l>presuman otra vez que canta Orfeo.</l>
            </lg>
            <lg>
               <l>Tú, que pudiste dar con imperiosa</l>
               <l n="10">voz (que tembló sin resistencia alguna</l>
               <l>el sol en su corona luminosa</l>
               <l>y en su argentado cóncavo la luna)</l>
               <l>naturaleza no, mas prodigiosa</l>
               <l>forma a la humana que corrió fortuna</l>
               <l n="15">en el tirreno mar, con nueva forma</l>
               <l>en platónico cisne me transforma.</l>
            </lg>

圣城奥罗艺术节,
古希腊哲学家埃莫萨,
Circe,que al-blanco cisne,al-rubio toro,
各种形式的超越,
卡斯塔利奥科罗酒店
我的朋友们;
哈拉斯·库里恩特斯·德尔·莱托酒店
普雷斯曼·奥特拉·维兹·卡塔·奥菲。
这是一个不和谐的世界
阿尔古纳抵抗运动
太阳光日冕
y en su argentado cóncavo la luna)
不,我是神童
科里福图纳人形酒店
蒂里诺三月,新形式
尼科顺铂是一种变革。
我想我必须定义一个参数,计算并加上值,但我无法找到解决方案


非常感谢你的帮助

您可以使用
xsl:number
获取文档中
l
元素的计数,然后测试其是否可被5整除以输出属性

试试这个XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes" />

    <xsl:template match="l">
        <xsl:variable name="n">
            <xsl:number level="any" />
        </xsl:variable>
        <xsl:copy>
            <xsl:if test="$n mod 5 = 0">
                <xsl:attribute name="n">
                    <xsl:value-of select="$n" />
                </xsl:attribute>
            </xsl:if>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

您可以使用
xsl:number
获取文档中
l
元素的计数,然后测试其是否可被5整除以输出属性

试试这个XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes" />

    <xsl:template match="l">
        <xsl:variable name="n">
            <xsl:number level="any" />
        </xsl:variable>
        <xsl:copy>
            <xsl:if test="$n mod 5 = 0">
                <xsl:attribute name="n">
                    <xsl:value-of select="$n" />
                </xsl:attribute>
            </xsl:if>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>