xsl-list
[Top] [All Lists]

RE: Copying XML tags into XSL variable - Urgent

2002-09-25 12:29:27
Hi Vignesh,

I'm not quite sure why you are using a variable but here is an XLST which 
outputs what you want:

XSLT::

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
        <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
        
        <xsl:template match="/">
                <output>
                        <xsl:apply-templates 
select="nds/input/modify/modify-attr[(_at_)attr-name='ROLE' and add-value]"/>
                </output>
        </xsl:template>
        
        <xsl:template match="modify-attr[(_at_)attr-name='ROLE']">
        
                <!-- assign tree into variable (no particular reason - just to 
demonstrate) -->
                <xsl:variable name="tempTree" select="."/>
        
                <!-- copy temp tree to output. This could be done directly 
without first assigning to variable -->
                <xsl:copy-of select="$tempTree"/>
        
        </xsl:template>
</xsl:stylesheet>

Results XML:

<?xml version="1.0" encoding="UTF-8"?>
<output>
        <modify-attr attr-name="ROLE" xmlns:jdbc="urn:dirxml:jdbc">
                <add-value>
                        <value type="string">ole</value>
                </add-value>
                <add-value>
                        <value type="string">staffportal</value>
                </add-value>
        </modify-attr>
</output>

If you just want the tree in the output then you don't need to use a variable - 
you can just put it into the output directly with <xsl:copy-of .../>

The XPath in your template:

<xsl::apply-templates
select="modify-attr[(_at_)attr-name='ROLE']/add-value"/>

Is going to find all <add-value> elements which are children of modify-attr 
where @attr-name='ROLE'.

Anyway, I hope that helps.

cheers

Malcolm




-----Original Message-----
From: Vignesh Balan R [mailto:vigneshbr(_at_)aztec(_dot_)soft(_dot_)net]
Sent: Wednesday, September 25, 2002 1:38 PM
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Copying XML tags into XSL variable - Urgent



Hi All

We have a XML file as the input , which would look like this,

<nds dtdversion="1.0" ndsversion="8.5" xmlns:jdbc="urn:dirxml:jdbc">
        <source>
                <product jdbc:build="20020215_1810"
jdbc:instance="JDBCdriver" version="1.5">DirXML Driver for
JDBC</product>
                <contact>Novell, Inc.</contact>
        </source>
        <input>
                <modify class-name="VIEW_INTMEDTAB"
event-id="modify:PK_ID=staff7,table=VIEW_INTMEDTAB,schema=OUHKDIRXML"
src-dn="PK_ID=staff7,table=VIEW_INTMEDTAB,schema=OUHKDIRXML">
                        <association
state="associated">PK_ID=staff7,table=VIEW_INTMEDTAB,schema=OUHKDIRXML</association>

                        <modify-attr attr-name="TYPEOFPOST">
                                <remove-all-values/>
                        </modify-attr>
                        <modify-attr attr-name="TYPEOFPOST">
                                <add-value>
                                        <value
type="string">Perm</value>
                                </add-value>
                        </modify-attr>
                        <modify-attr attr-name="LOGINNAME1">
                                <remove-all-values/>
                        </modify-attr>
                        <modify-attr attr-name="LOGINNAME1">
                                <add-value>
                                        <value
type="string">staff7</value>
                                </add-value>
                        </modify-attr>
                        <modify-attr attr-name="ROLE">
                                <remove-all-values/>
                        </modify-attr>
                       <modify-attr attr-name="ROLE">
                                <add-value>
                                        <value type="string">ole</value>

                                </add-value>
                                <add-value>
                                        <value
type="string">staffportal</value>
                                </add-value>
                        </modify-attr>
                        <modify-attr attr-name="OUTYPE">
                                <remove-all-values/>
                        </modify-attr>
                        <modify-attr attr-name="OUTYPE">
                                <add-value>
                                        <value
type="string">staff</value>
                                </add-value>
                        </modify-attr>
                        <modify-attr attr-name="INTPASSWORD">
                                <remove-all-values/>
                        </modify-attr>
                </modify>
        </input>
</nds>

From the above XML i want to copy the following text
                "<modify-attr attr-name="ROLE">
                                <add-value>
                                        <value type="string">ole</value>

                                </add-value>
                                <add-value>
                                        <value
type="string">staffportal</value>
                                </add-value>
                        </modify-attr> "
into a variable in XSL. I want the whole thing to be stored as a
text(not only the parsed values, but all the tags too) in the variable.

I have tried the following using <xsl:apply-templates>.
<xsl::apply-templates
select="modify-attr[(_at_)attr-name='ROLE']/add-value"/>

But it doesnt copy the whole text, instead copies only the first
value("ole" in the above modify-attr).

Any pointers of how to do this, would be greatly appreciated.

Thanks and Regards
Vignesh

--
Early bird gets the worm ... Big Incentive !!


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>