Re: [oXygen-user] how to change value of attributes

Sorry for my english. i will try to explain you better. in another occasion i prepared this .xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet exclude-result-prefixes="#all" version="2.0" xmlns:mets="http://www.loc.gov/METS/" xmlns:mix="http://www.loc.gov/mix/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:rd="http://cosimo.stanford.edu/sdr/metsrights/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes" method="xml"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="mets:div[@LABEL='Testo']/mets:div[position() mod 2 = 1]"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:attribute name="LABEL"> <xsl:text>Carta [</xsl:text><xsl:number count="mets:div[@LABEL='Testo']/mets:div[position() mod 2 = 1]" format="1"/>r]</xsl:attribute> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="mets:div[@LABEL='Testo']/mets:div[position() mod 2 = 0]"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:attribute name="LABEL"> <xsl:text>Carta [</xsl:text><xsl:number count="mets:div[@LABEL='Testo']/mets:div[position() mod 2 = 0]" format="1"/>v]</xsl:attribute> <xsl:apply-templates/> </xsl:copy> </xsl:template> </xsl:stylesheet> in that case <mets:div LABEL="Pagina #"> was sub-element of <mets:div LABEL="testo">; instead, in this case, it's subelement of another element, like <mets:div LABEL="frontespizio". i need to select only <mets:div> elements that have LABEL="Pagina #", and change the value in LABEL="Carta". then i need to add a count of these elements: one count for even elements, one for odd elements. but it's difficult for me to select this group of element.

Hi, Ok, I see that you posted with more details on the xsl-list and you got also good answers there. Best Regards, George -- George Cristian Bina <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger http://www.oxygenxml.com ivanmacculi@libero.it wrote:
Sorry for my english. i will try to explain you better. in another occasion i prepared this .xsl
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet exclude-result-prefixes="#all" version="2.0" xmlns:mets="http://www.loc.gov/METS/" xmlns:mix="http://www.loc.gov/mix/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:rd="http://cosimo.stanford.edu/sdr/metsrights/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template>
<xsl:template match="mets:div[@LABEL='Testo']/mets:div[position() mod 2 = 1]"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:attribute name="LABEL"> <xsl:text>Carta [</xsl:text><xsl:number count="mets:div[@LABEL='Testo']/mets:div[position() mod 2 = 1]" format="1"/>r]</xsl:attribute> <xsl:apply-templates/> </xsl:copy> </xsl:template>
<xsl:template match="mets:div[@LABEL='Testo']/mets:div[position() mod 2 = 0]"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:attribute name="LABEL"> <xsl:text>Carta [</xsl:text><xsl:number count="mets:div[@LABEL='Testo']/mets:div[position() mod 2 = 0]" format="1"/>v]</xsl:attribute> <xsl:apply-templates/> </xsl:copy> </xsl:template>
</xsl:stylesheet>
in that case <mets:div LABEL="Pagina #"> was sub-element of <mets:div LABEL="testo">; instead, in this case, it's subelement of another element, like <mets:div LABEL="frontespizio". i need to select only <mets:div> elements that have LABEL="Pagina #", and change the value in LABEL="Carta". then i need to add a count of these elements: one count for even elements, one for odd elements. but it's difficult for me to select this group of element.
participants (2)
-
George Cristian Bina
-
ivanmacculi@libero.it