Ureader.com  
Microsoft software help and Community
   home   |   control panel login   |   archive   |  
 
XML
data.xmlanalysis
mappoint.webservice
msf
msxml-webrelease
netmyservices.sdk
passport.sdk
soap
soapsdk
uddi.general
uddi.programming
uddi.specification
xml
xmlsqlwebrelease
xsl
  
 
date: Sun, 8 Jun 2008 12:34:00 -0700,    group: microsoft.public.xsl        back       


Converting attributes to elements   
Hello,

I have xml file where in at various levels, I get following data structures, 
these can appear multiple times, and at multiple levels and locations:

      <UserValue value="PropertyValue" title="Property" />

I want to conver this element as follows:

      <UserValue>
            <Property>PropertyValue</Property>

How do I do this using xslt?

Thanks
Yogi Watcher
date: Sun, 8 Jun 2008 12:34:00 -0700   author:   Yogi Watcher

Re: Converting attributes to elements   
Yogi Watcher wrote:

> I have xml file where in at various levels, I get following data structures, 
> these can appear multiple times, and at multiple levels and locations:
> 
>       <UserValue value="PropertyValue" title="Property" />
> 
> I want to conver this element as follows:
> 
>       <UserValue>
>             <Property>PropertyValue</Property>
> 
> How do I do this using xslt?


   <xsl:template match="@* | node()">
     <xsl:copy>
       <xsl:apply-templates select="@* | node()"/>
     </xsl:copy>
   </xsl:template>

   <xsl:template match="UserValue">
     <xsl:copy>
       <xsl:element name="{@title}">
         <xsl:value-of select="@value"/>
       </xsl:element>
     </xsl:copy>
   </xsl:template>



-- 

	Martin Honnen --- MVP XML
	http://JavaScript.FAQTs.com/
date: Mon, 09 Jun 2008 12:46:06 +0200   author:   Martin Honnen

Re: Converting attributes to elements   
Hello Martin,

I used this same xslt, but I don't get the desired result. All I get is 
exact copy of the my original xml file. In my original file inside my root 
element there is is an attribute 
"xmlns=http://www.plmxml.org/Schemas/PLMXMLSchema" defined.

I noticed that if I keep this attribute in my original xml file, all I get 
back after transformation is exact copy of the source. However, if I remove 
this attribute then transform works exactly as I needed.

Is this normal, how do I workaround this issue?

Thanks.

"Martin Honnen" wrote:

> Yogi Watcher wrote:
> 
> > I have xml file where in at various levels, I get following data structures, 
> > these can appear multiple times, and at multiple levels and locations:
> > 
> >       <UserValue value="PropertyValue" title="Property" />
> > 
> > I want to conver this element as follows:
> > 
> >       <UserValue>
> >             <Property>PropertyValue</Property>
> > 
> > How do I do this using xslt?
> 
> 
>    <xsl:template match="@* | node()">
>      <xsl:copy>
>        <xsl:apply-templates select="@* | node()"/>
>      </xsl:copy>
>    </xsl:template>
> 
>    <xsl:template match="UserValue">
>      <xsl:copy>
>        <xsl:element name="{@title}">
>          <xsl:value-of select="@value"/>
>        </xsl:element>
>      </xsl:copy>
>    </xsl:template>
> 
> 
> 
> -- 
> 
> 	Martin Honnen --- MVP XML
> 	http://JavaScript.FAQTs.com/
>
date: Mon, 9 Jun 2008 06:00:02 -0700   author:   Yogi Watcher

Re: Converting attributes to elements   
Yogi Watcher wrote:

> I used this same xslt, but I don't get the desired result. All I get is 
> exact copy of the my original xml file. In my original file inside my root 
> element there is is an attribute 
> "xmlns=http://www.plmxml.org/Schemas/PLMXMLSchema" defined.
> 
> I noticed that if I keep this attribute in my original xml file, all I get 
> back after transformation is exact copy of the source. However, if I remove 
> this attribute then transform works exactly as I needed.
> 
> Is this normal, how do I workaround this issue?

Change this template

>>    <xsl:template match="UserValue">
>>      <xsl:copy>
>>        <xsl:element name="{@title}">
>>          <xsl:value-of select="@value"/>
>>        </xsl:element>
>>      </xsl:copy>
>>    </xsl:template>

to
   <xsl:template match="pl:UserValue"
     xmlns:pl="http://www.plmxml.org/Schemas/PLMXMLSchema">
     <xsl:copy>
       <xsl:element name="{@title}">
         <xsl:value-of select="@value"/>
       </xsl:element>
     </xsl:copy>
   </xsl:template>

-- 

	Martin Honnen --- MVP XML
	http://JavaScript.FAQTs.com/
date: Mon, 09 Jun 2008 15:07:53 +0200   author:   Martin Honnen

Re: Converting attributes to elements   
Hello Martin,

Thanks. It worked.

Just to see what happens, I changed "pl:UserValue" to "junk:UserValue" and 
"xmlns:pl" to "xmlns:junk" and it still works!!! Now I am curious as why it 
works with "pl" or with some random text as "junk".

But thank you for helping me.

"Martin Honnen" wrote:

> Yogi Watcher wrote:
> 
> > I used this same xslt, but I don't get the desired result. All I get is 
> > exact copy of the my original xml file. In my original file inside my root 
> > element there is is an attribute 
> > "xmlns=http://www.plmxml.org/Schemas/PLMXMLSchema" defined.
> > 
> > I noticed that if I keep this attribute in my original xml file, all I get 
> > back after transformation is exact copy of the source. However, if I remove 
> > this attribute then transform works exactly as I needed.
> > 
> > Is this normal, how do I workaround this issue?
> 
> Change this template
> 
> >>    <xsl:template match="UserValue">
> >>      <xsl:copy>
> >>        <xsl:element name="{@title}">
> >>          <xsl:value-of select="@value"/>
> >>        </xsl:element>
> >>      </xsl:copy>
> >>    </xsl:template>
> 
> to
>    <xsl:template match="pl:UserValue"
>      xmlns:pl="http://www.plmxml.org/Schemas/PLMXMLSchema">
>      <xsl:copy>
>        <xsl:element name="{@title}">
>          <xsl:value-of select="@value"/>
>        </xsl:element>
>      </xsl:copy>
>    </xsl:template>
> 
> -- 
> 
> 	Martin Honnen --- MVP XML
> 	http://JavaScript.FAQTs.com/
>
date: Mon, 9 Jun 2008 07:59:01 -0700   author:   Yogi Watcher

Re: Converting attributes to elements   
Yogi Watcher wrote:

> Just to see what happens, I changed "pl:UserValue" to "junk:UserValue" and 
> "xmlns:pl" to "xmlns:junk" and it still works!!! Now I am curious as why it 
> works with "pl" or with some random text as "junk".

What matters is the namespace URI (in your case 
http://www.plmxml.org/Schemas/PLMXMLSchema), the prefix (e.g. 'pl' or 
'junk') can be freely choosen, you simply need to bind it to the 
namespace URI of the elements you want to match.


-- 

	Martin Honnen --- MVP XML
	http://JavaScript.FAQTs.com/
date: Mon, 09 Jun 2008 17:34:51 +0200   author:   Martin Honnen

Google
 
Web ureader.com


    COPYRIGHT 2007, YARDI TECHNOLOGY LIMITED, ALL RIGHT RESERVE  |   contact us