xsl-list
[Top] [All Lists]

Re: Grouping-by appropriate values from external document.

2005-10-21 05:51:33





Hi,

Please see this stylesheet.

<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>


 <xsl:output method="xml"/>

 <xsl:key name="prd" match="product" use="@pr_id"/>

 <xsl:template match="/shop">

 <xsl:variable name="goods" select="document('registry.xml')"/>


<grouping>
  <xsl:for-each-group select="product" group-by="@pr_id">
  <xsl:sort select="$goods/registry/goods[(_at_)id=current()/@pr_id]/@name"/>

      <group>

      <xsl:copy-of select="key('prd', current-grouping-key())"/>

      </group>
  </xsl:for-each-group>
</grouping>

 </xsl:template>

 </xsl:stylesheet>


cheers,
prakash




                                                                                
                                                
                      Xasima Xirohata                                           
                                                
                      <xasima(_at_)gmail(_dot_)co         To:      
xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com                                
         
                      m>                       cc:      (bcc: 
omprakash.v/Polaris)                                              
                                               Subject: [xsl] Grouping-by 
appropriate values from external document.            
                      10/21/2005 04:14                                          
                                                
                      PM                                                        
                                                
                      Please respond                                            
                                                
                      to xsl-list                                               
                                                
                                                                                
                                                
                                                                                
                                                




My question could be expressed shorty as the following.
How to make correct the idea that marked in this XSLT 2.0 wrong expression:
 <xsl:for-each-group  select="/shop/product"
group-by="document('registry.xml')//goods[(_at_)id=current()/pr_id]/@name"/>

----------
Extended discription:


I have a registry looks like

<registry>
    <goods id="g123" name="Sweet Cake">
    <goods id="g124" name="Big Cake">
    <goods id="g125" name="Royal">
</registry>


Incoming XML documents looks like


<shop>
    <product pr_id="g123">
        <!--smth additional like package, container number,
count-->
    </product>
    <product pr_id="g124"> <!-the same--></product>
</registry>


I'd like to group "product" by the name of this product (goods) in
registry base, and sort them it that order.

For Example:
<grouping>
<group name="Big Cake">
    <product pr_id="g124"></product>
     <!-- all product with this pr_id -->
</group>
<group name="Sweet Cake">
    <product pr_id="g123"></product>
     <!-- blah-blah -->
</group>
</grouping>


Draw attention, that the ordering of "group" is the string ordering of
goods name in registry (B  - first) .

By the way, I seem  not be agreed with the exploring registry first
(apply-template select="document('registry.xml')//product" + sort
select="name") and populate appropriate product in in.xml. The
registry may be much more greater than in.xml.

Well, I tried the following code, but caught the failure


<xsl:for-each-group  select="/shop/product"
group-by="document('registry.xml')//goods[(_at_)id=current()/pr_id]/@name">

</xsl:for-each-group>


Would you be so kind to prompt to solution?

Thanks in advance.



--
Regards,
          ~ Xasima Xirohata ~

--~------------------------------------------------------------------
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>
--~--





This e-Mail may contain proprietary and confidential information and is sent 
for the intended recipient(s) only. 
If by an addressing or transmission error this mail has been misdirected to 
you, you are requested to delete this mail immediately.
You are also hereby notified that any use, any form of reproduction, 
dissemination, copying, disclosure, modification,
distribution and/or publication of this e-mail message, contents or its 
attachment other than by its intended recipient/s is strictly prohibited.

Visit Us at http://www.polaris.co.in

--~------------------------------------------------------------------
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>
--~--