[oXygen-user] how to change value of attributes
George Cristian Bina
Wed Nov 25 10:54:37 CST 2009
Hi,
It is not very clear from your description what is the algorithm to
compute the new values. Assuming that you want those values only on the
level 3 div elements and they will continue with carta 3r, carta 3v,
carta 4r, etc. then something like below should do it:
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/mets:div/mets:div/mets:div">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:attribute name="LABEL">
<xsl:text>Carta </xsl:text>
<xsl:variable name="index"
select="count(preceding::mets:div[parent::mets:div/parent::mets:div])"/>
<xsl:value-of select="($index - $index mod 2) div 2 + 1"/>
<xsl:value-of select="if ($index mod 2 = 0) then 'r' else 'v'"/>
</xsl:attribute>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
Best Regards,
George
--
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
wrote:
> Hi all, i'm a librarian with a problem: i've to change the value of attribute for each element of a group that i'm not able to select and count.
> i've something like this:
>
> <mets:div LABEL="Testo" ORDER="4" ORDERLABEL="1">
> <mets:div LABEL="Frontespizio" ORDER="1" ORDERLABEL="1">
> <mets:div LABEL="Pagina 5" ORDER="1" ORDERLABEL="5">
> <mets:fptr FILEID="file.00008"/>
> </mets:div>
> </mets:div>
> <mets:div LABEL="Dedica" ORDER="2" ORDERLABEL="1">
> <mets:div LABEL="Pagina 6" ORDER="1" ORDERLABEL="6">
> <mets:fptr FILEID="file.00009"/>
> </mets:div>
> </mets:div>
> <mets:div LABEL="Canto I" ORDER="3" ORDERLABEL="1">
> <mets:div LABEL="Pagina 7" ORDER="1" ORDERLABEL="7">
> <mets:fptr FILEID="file.00010"/>
> </mets:div>
> <mets:div LABEL="Pagina 8" ORDER="2" ORDERLABEL="8">
> <mets:fptr FILEID="file.00011"/>
> </mets:div>
> <mets:div LABEL="Pagina 9" ORDER="3" ORDERLABEL="9">
> <mets:fptr FILEID="file.00012"/>
> </mets:div>
> </mets:div>
> </mets:div>
>
> i have to change the value of LABEL from "pagina 5, pagina 6, pagina 7, pagina 8, etc..." to "carta 1r, carta 1v, carta 2r, carta 2v, etc".
> It will be something like this:
>
> <mets:div LABEL="Testo" ORDER="4" ORDERLABEL="1">
> <mets:div LABEL="Frontespizio" ORDER="1" ORDERLABEL="1">
> <mets:div LABEL="Carta 1r" ORDER="1" ORDERLABEL="5">
> <mets:fptr FILEID="file.00008"/>
> </mets:div>
> </mets:div>
> <mets:div LABEL="Dedica" ORDER="2" ORDERLABEL="1">
> <mets:div LABEL="Carta 1v" ORDER="1" ORDERLABEL="6">
> <mets:fptr FILEID="file.00009"/>
> </mets:div>
> </mets:div>
> <mets:div LABEL="Canto I" ORDER="3" ORDERLABEL="1">
> <mets:div LABEL="Carta 2r" ORDER="1" ORDERLABEL="7">
> <mets:fptr FILEID="file.00010"/>
> </mets:div>
> <mets:div LABEL="Carta 2v" ORDER="2" ORDERLABEL="8">
> <mets:fptr FILEID="file.00011"/>
> </mets:div>
> <mets:div LABEL="Carta 3r" ORDER="3" ORDERLABEL="9">
> <mets:fptr FILEID="file.00012"/>
> </mets:div>
> </mets:div>
> </mets:div>
>
> thanks a lot to everyone.
>
>
>
> _______________________________________________
> oXygen-user mailing list
>
> http://www.oxygenxml.com/mailman/listinfo/oxygen-user
More information about the oXygen-user
mailing list