我有很多长诗,我想用五行来编号,用一个属性来存储他们的位置。
输入:
<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>
期望的输出:
<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>
我想我必须定义一个参数,计算并添加值,但我无法找到解决方案。
非常感谢您的帮助!
答案 0 :(得分:2)
您可以使用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>