xsl-list
[Top] [All Lists]

Re: [xsl] Selecting the value from diff i/p XML

2010-09-15 18:00:22
Gerrit,

good solutions.

While the simpler with Root1.xml as input is to prefer it
is also XSLT 1.0.

I modified your other solution in order to emulate 3-argument
XPath2 key function in XSLT 1.0:

   <xsl:template match="/">
-    <xsl:for-each select="key(
-                            'idlist',
-                            key('idlist', $data/root1/item/@id)/@id,
-                            $data
-                          )
-                          ">
-      <xsl:value-of select="@value"/>
-      <br/>
+    <xsl:variable name="ids"
+                  select="key('idlist', $data/root1/item/@id)/@id"/>
+    <xsl:for-each select="$data">
+      <xsl:for-each select="key(
+                              'idlist',
+                              $ids
+                            )
+                            ">
+        <xsl:value-of select="@value"/>
+        <br/>
+      </xsl:for-each>
     </xsl:for-each>
   </xsl:template>



$ xsltproc 2.xsl Root1.xml
A<br/>C<br/>E<br/>F<br/>H<br/>I<br/>J<br/>
$
$ saxon 1.xsl Root2.xml ; echo
A<br/>C<br/>E<br/>F<br/>H<br/>I<br/>J<br/>
$
$ xsltproc 1a.xsl Root2.xml
A<br/>C<br/>E<br/>F<br/>H<br/>I<br/>J<br/>
$



Mit besten Gruessen / Best wishes,

Hermann Stamm-Wilbrandt
Developer, XML Compiler, L3
Fixpack team lead
WebSphere DataPower SOA Appliances
----------------------------------------------------------------------
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschaeftsfuehrung: Dirk Wittkopp
Sitz der Gesellschaft: Boeblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294



From:       "Imsieke, Gerrit, le-tex" 
<gerrit(_dot_)imsieke(_at_)le-tex(_dot_)de>
To:         xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Date:       09/15/2010 11:54 PM
Subject:    Re: [xsl] Selecting the value from diff i/p XML





On 15.09.2010 23:51, Imsieke, Gerrit, le-tex wrote:
You key function returns the elements of Root2.xml whose id matches
those of the Root1 items.

But ultimately you want to lookup the value attributes of the
corresponding Root1 elements.

If you really want to process root2.xml as primary source, you may try
this (XPath2's 3-argument key function involved):
In fact, it's the XSLT2 and not an XPath2 key function:
http://www.w3.org/TR/xslt20/#function-key

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--