XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Julio de la VegaSubject: Grouping Problem
Author: Julio de la Vega
Date: 28 Sep 2007 05:18 AM
Hi *,

I am trying to group my xml files two times (second grouping inside first one) using Muenchian Method.

I have seen that my keys are working properly but my problem is that I repeating the structure from the second grouping because I am having problems to process only on row of every group in my second key. Grouping is ok but I am repeating it.

Could you please help me to understand where problem is?

Thanks in advance

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="next" match="REG_03128" use="generate-id(preceding-sibling::REG_00010[1])"/>
<xsl:key name="REG_03128" match="REG_03128" use="concat(generate-id(preceding-sibling::REG_00010[1]),cuenta)"/>

<xsl:template match="/">
<root>
<xsl:apply-templates select="root/REG_00010" />
</root>


</xsl:template>

<xsl:template match="REG_00010">
<REG_0010>
<xsl:copy-of select="*"/>
<xsl:apply-templates select="key('next',generate-id(self::REG_00010))"/>

</REG_0010>
</xsl:template>

<xsl:template match="REG_03128">

<xsl:variable name="variable_hps" select="key('REG_03128', concat(generate-id(preceding-sibling::REG_00010[1]),cuenta))"/>

<xsl:for-each select="$variable_hps[generate-id()=generate-id(key('REG_03128', concat(generate-id(preceding-sibling::REG_00010[1]),cuenta))[1])]">
<Bloque_Cuenta>
<xsl:for-each select="key('REG_03128', concat(generate-id(preceding-sibling::REG_00010[1]),cuenta))">
<xsl:copy-of select="Desc"/>
</xsl:for-each>
</Bloque_Cuenta>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>


UnknownResources.zip
Developments

Postnext
James DurningSubject: Grouping Problem
Author: James Durning
Date: 28 Sep 2007 04:01 PM
You're running the <Bloque_Cuenta> part everytime you get to the template:
<xsl:template match="REG_03128">

I think what you want instead is something like:

<xsl:template match="REG_03128">
<xsl:if test="concat(generate-id(preceding-sibling::REG_00010[1]),cuenta) = (key('REG_03128', concat(generate-id(preceding-sibling::REG_00010[1]),cuenta)))">
<Bloque_Cuenta>
<xsl:for-each select="key('REG_03128', concat(generate-id(preceding-sibling::REG_00010[1]),cuenta))">
<xsl:copy-of select="Desc"/>
</xsl:for-each>
</Bloque_Cuenta>
</xsl:if>
</xsl:template>

Posttop
Julio de la VegaSubject: Grouping Problem
Author: Julio de la Vega
Date: 11 Oct 2007 11:47 AM
Thank you James,

I saw what I was doing in a wrong way. I solved it using a diferent option but thank you for your help

Regards

Julio

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.