RE: [xsl] Using XSLT to change XML and modify node with XPath

Subject: RE: [xsl] Using XSLT to change XML and modify node with XPath
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 6 Feb 2009 10:58:57 -0000
Standard XSLT does not provide any way to evaluate an XPath expression that
is read dynamically from a source document as a string value. However, this
facility is often provided as an extension: see for example saxon:evaluate()
and saxon:evaluate-node().

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: kheris [mailto:kheris@xxxxx] 
> Sent: 05 February 2009 19:51
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Using XSLT to change XML and modify node with XPath
> 
> Hi all,
> 
> Maybe anyone can still help me on this:
> I need to transform XML1 to XML2.
> The procedure i am looking for is something like:
> 1) i reach the node var-path
> 2) i meet the node path. I get the value, and i search for 
> /def[name=value]
> 3) i meet the second node path in current var-path. I get the 
> value, and now i search for 
> /def[name=value_of_path_before]//def[value_of_path_now]
> 4) etc.
> 
> So, i use previously found node as starting node now. What is 
> more, i need to use //, as structure of path can be deeper 
> then explicitly said. But i can return only first found node 
> (so, if more nodes satisfy that, i get always the first one).
> 
> I have XQuery for searching/modifying nodes. Maybe is it 
> possible to combine it (i tried to google some more info, but 
> most tool don't allow that)
> 
> 
> XML 1:
> <?xml version="1.0" encoding="UTF-8"?>
> <xml>
>  <def>
>     <name>Var1</name>
>     <val>0</val>
>         <def>
>         <name>SubVar</name>
>         <val>012</val>
>     </def>
>  </def>
>  <def>
>     <name>Var2</name>
>     <val>1</val>
>  </def>
>  <test-node>
>         <use>
>             <var-path>
>                 <path>Var1</path>
>                 <path>SubVar</path>
>             </var-path>
>         </use>
>  </test-node>
> </xml>
> 
> XML 2:
> <?xml version="1.0" encoding="UTF-8"?>
> <xml>
>  <def>
>     <name>Var1</name>
>     <val>0</val>
>         <def>
>         <name>SubVar</name>
>         <val>012</val>
>     </def>
>  </def>
>  <def>
>     <name>Var2</name>
>     <val>1</val>
>  </def>
>  <test-node>
>         <use>
>             <var-path>
>                 <path value="0">Var1</path>
>                 <path value="012">SubVar</path>
>             </var-path>
>         </use>
>  </test-node>
> </xml>

Current Thread