xygen-user@xxxxxxxxxxxxx
Cc :
Date : Fri, 27 Nov 2009 21:00:23 +0100
Subject : [xsl] how to create an exclusion list from a variable?
> HI all, i've this xml and i'm tryng to change the value of the attribut=
es. This is what i have:
>
> <mets:div LABEL=3D"Canto I">
> <mets:div LABEL=3D"Pagina 7">
> <mets:fptr FILEID=3D"file.00010"/>
> </mets:div>
> <mets:div LABEL=3D"Pagina 8">
> <mets:fptr FILEID=3D"file.00011"/>
> </mets:div>
> <mets:div LABEL=3D"Pagina 9">
> <mets:fptr FILEID=3D"file.00012"/>
> </mets:div>
> <mets:div LABEL=3D"Pagina 10">
> <mets:fptr FILEID=3D"file.00013"/>
> </mets:div>
> <mets:div LABEL=3D"Pagina 11">
> <mets:fptr FILEID=3D"file.00014"/>
> </mets:div>
> <mets:div LABEL=3D"Pagina 12">
> <mets:fptr FILEID=3D"file.00015"/>
> </mets:div>
> <mets:div LABEL=3D"Pagina 13">
> <mets:fptr FILEID=3D"file.00016"/>
> </mets:div>
> <mets:div LABEL=3D"Pagina 14">
> <mets:fptr FILEID=3D"file.00017"/>
> </mets:div>
> <mets:div LABEL=3D"Pagina 15">
> <mets:fptr FILEID=3D"file.00018"/>
> </mets:div>
> <mets:div LABEL=3D"Pagina 16">
> <mets:fptr FILEID=3D"file.00019"/>
> </mets:div>
> <mets:div LABEL=3D"Pagina 17">
> <mets:fptr FILEID=3D"file.00020"/>
> </mets:div>
> </mets:div>
>
> this is what i would like to obtain:
>
> <mets:div LABEL=3D"Canto I">
> <mets:div LABEL=3D"Pagina 7">
> <mets:fptr FILEID=3D"file.00010"/>
> </mets:div>
> <mets:div LABEL=3D"Carta [1r]">
> <mets:fptr FILEID=3D"file.00011"/>
> </mets:div>
> <mets:div LABEL=3D"Carta [1v]">
> <mets:fptr FILEID=3D"file.00012"/>
> </mets:div>
> <mets:div LABEL=3D"Carta [2r]">
> <mets:fptr FILEID=3D"file.00013"/>
> </mets:div>
> <mets:div LABEL=3D"Carta [2v]">
> <mets:fptr FILEID=3D"file.00014"/>
> </mets:div>
> <mets:div LABEL=3D"Carta [3r]">
> <mets:fptr FILEID=3D"file.00015"/>
> </mets:div>
> <mets:div LABEL=3D"Pagina 13">
> <mets:fptr FILEID=3D"file.00016"/>
> </mets:div>
> <mets:div LABEL=3D"Carta [3v]">
> <mets:fptr FILEID=3D"file.00017"/>
> </mets:div>
> <mets:div LABEL=3D"Carta [4r]">
> <mets:fptr FILEID=3D"file.00018"/>
> </mets:div>
> <mets:div LABEL=3D"Carta [4v]">
> <mets:fptr FILEID=3D"file.00019"/>
> </mets:div>
> <mets:div LABEL=3D"Carta [5r]">
> <mets:fptr FILEID=3D"file.00020"/>
> </mets:div>
> </mets:div>
>
> Hannon helped me to create this xsl that trasforms the values of all th=
e attributes (Michael Kay suggested me another way to do it, but it's dif=
ficult to me to use it -he uses functions and namespaces- and it doesn't =
work), but, now, i need to exclude some of these, in this case "Pagina 7"=
and "Pagina 13". How can i build an exclusion list in the variable? than=
k you a lot to everyone. i promise i will start to study Kay's manual ear=
ly, and disturbing no more.
>
> <?xml version=3D"1.0" encoding=3D"UTF-8"?>
> <xsl:stylesheet exclude-result-prefixes=3D"#all" version=3D"2.0"
> xmlns:mets=3D"http://www.loc.gov/METS/" xmlns:mix=3D"http://www.loc.gov=
/mix/" xmlns:xlink=3D"http://www.w3.org/1999/xlink"
> xmlns:rd=3D"http://cosimo.stanford.edu/sdr/metsrights/" xmlns:xsl=3D"ht=
tp://www.w3.org/1999/XSL/Transform">
>
> <xsl:output indent=3D"yes" method=3D"xml"/>
>
> <xsl:template match=3D"@* | node()">
> <xsl:copy>
> <xsl:apply-templates select=3D"@*, node()"/>
> </xsl:copy>
> </xsl:template>
>
> <xsl:template match=3D"mets:div/@LABEL[matches(., '^Pagina [0-9=
]+$')]">
> <xsl:variable name=3D"n">
> <xsl:number level=3D"any" count=3D"mets:div[@LABEL[matc=
hes(.,
> '^Pagina [0-9]+$')]]"/>
> </xsl:variable>
> <xsl:attribute name=3D"LABEL" select=3D"concat('Carta [', i=
f ($n mod 2 =3D
> 0) then concat(($n + 1) idiv 2, 'v]') else concat(($n +=
1) idiv 2, 'r]'))"/>
> </xsl:template>
>
> </xsl:stylesheet>