Subject: Re: [xsl] Rename Some Node and attribute From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx> Date: Mon, 16 Oct 2006 21:29:31 +0530 |
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*" /> </xsl:copy> </xsl:template>
<xsl:template match="*[local-name() = 'RICHIESTA_PRESTAZIONI_EROGABILI']"> <ser:ELENCO_PRESTAZIONI xmlns:ser="http://services.standardcup.esel.it"> <xsl:copy-of select="@*[not(local-name() = 'idCup')]" /> <xsl:attribute name="idCUP"><xsl:value-of select="@idCup"/></xsl:attribute> <ser:PRESTAZIONE /> <xsl:apply-templates /> </ser:ELENCO_PRESTAZIONI> </xsl:template>
Thanks. But how to rename the node : RICHIESTA_PRESTAZIONI_EROGABILI into :ELENCO_PRESTAZIONI inside this magic stuff? My question is : rename attribute idCup in idCUP and rename nome RICHIESTA_PRESTAZIONI_EROGABILI to ELENCO_PRESTAZIONI
this is my input: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.standardcup.esel.it"> <soapenv:Body> <ser:RICHIESTA_PRESTAZIONI_EROGABILI DataOra="10102005" idCup="1" idOperatore="1"/> </soapenv:Body> </soapenv:Envelope>
and i want this output: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://regione.campania.it/schemas/cup"> <soapenv:Body> <ser:ELENCO_PRESTAZIONI DataOra="?" idCUP="?" idOperatore="?"> <ser:PRESTAZIONE/> </ser:ELENCO_PRESTAZIONI> </soapenv:Body> </soapenv:Envelope>
Thanks.
Abel Braaksma ha scritto: > Davide Antoni wrote: >> Hi to all >> >> <xsl:template match="*"> >> <xsl:copy> >> <xsl:copy-of select="@*[name()!='idCup']"/> >> <xsl:if test="@idCup"> >> <xsl:attribute name="idCUP"> >> <xsl:value-of select="@idCup"> >> </xsl:value-of> >> </xsl:attribute> >> </xsl:if> >> <xsl:apply-templates/> >> </xsl:copy> >> </xsl:template> > > Why all the complex xsl:copy and xsl:copy-of intermingled with xsl:if? > Make it yourself easier by applying the (in)famous copy-idiom. Try > this as a complete replacement of your code and the magic of XSLT will > do the work: > > <xsl:template match="node( ) | @*"> > <xsl:copy> > <xsl:apply-templates select="@* | node( )"/> > </xsl:copy> > </xsl:template> > > <xsl:template match="@idCup"> > <xsl:attribute name="idCUP"> > <xsl:value-of select="."/> > </xsl:attribute> > </xsl:template> > > Hope this helps, > > Cheers > -- Abel Braaksma > http://www.nuntia.com
-- Regards, Mukul Gandhi
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Rename Some Node and attr, Abel Braaksma | Thread | Re: [xsl] Rename Some Node and attr, Mukul Gandhi |
RE: [xsl] [XSLT 2.0] Checking that , Costello, Roger L. | Date | Re: [xsl] Rename Some Node and attr, Abel Braaksma |
Month |