[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Keys and select distinct - is that the solution ?
sorry I mean it is a one-to-many - christian On 6/3/06, Christian Rasmussen <byggemandbob@xxxxxxxxx> wrote: method,First of all thanx to both of you for trying to help. right now I am trying to apply your suggestions.... but regarding your last statement Wendell Piez:constructs. generate-id(key('manure-type-codes',.)[1])">> > In XSLT 1.0, it's a fairly standard grouping > problem. Usually we de-duplicate a set of nodes > by determining which members of the set are the > first (in document order) with a given value. In > your case, you have to decide whether the value > you want to check is the code value, or the name > (if they're in a strict one-to-one relation it > doesn't matter, and the value is more convenient). > > Keys are a very convenient way to de-duplicate > when your data set is large. You can use brute XPath if not. > > So: > > <xsl:key name="manure-type-codes" match="gr:ManureTypeCode" > use="."/> > > <xsl:key name="manure-type-names" match="gr:ManureTypeName" > use="../gr:ManureTypeCode"/> > > <xsl:template match="gr:ManureTypeCode"> > <xsl:if test="generate-id() = > <!-- tests true only if the ManureTypeCode is the first with thisvalue, > more or less the equivalent of 'select distinct' --> > <xsl:copy-of select="key('manure-type-names',.)"/> > </xsl:if> > </xsl:template> > > If the codes and names are in a one-to-many or > many-to-many relation, we have to think harder. > > I hope this helps! > Wendell > > At 05:55 PM 6/2/2006, you wrote: > >Hi experts, > > > >I've been struggling with a problem for several hours now, and I > >cannot find the solution: > >I have an XML document with a elements grouped in elements and > >ManureTypeCodes and datavalues as siblings. > >Then I have - somewhere else - in the document lookup information > >(labels) for the codes. > >These are grouped in elements of ManureTypeCodes and ManureTypeNames > > > >I want to create a template rule which matches the codes and looks up > >the corresponding name and ONLY writes the > >ManureTypeName out once! In RDBMS I would use something like select > >distinct when selecting the codes, but I dont know what the right > >approach is in XSLT. > > > >can someone please help.... on before hand thank you! > > > >my XML: > ><eih> > > <!-- Codes and data --> > > <eih:ManureTypeCollection> > > <eih:ManureTypeStructure> > > <gr:ManureTypeCode>5</gr:ManureTypeCode> > > <gr:ElementIdentifier>N</gr:ElementIdentifier> > > <gr:ElementQuantity>17.0</gr:ElementQuantity> > > </eih:ManureTypeStructure> > > <eih:ManureTypeStructure> > > <gr:ManureTypeCode>5</gr:ManureTypeCode> > > <gr:ElementIdentifier>P</gr:ElementIdentifier> > > <gr:ElementQuantity>0.6</gr:ElementQuantity> > > </eih:ManureTypeStructure> > > <eih:ManureTypeStructure> > > <gr:ManureTypeCode>4</gr:ManureTypeCode> > > <gr:ElementIdentifier>N</gr:ElementIdentifier> > > <gr:ElementQuantity>17.5</gr:ElementQuantity> > > </eih:ManureTypeStructure> > > <eih:ManureTypeStructure> > > <gr:ManureTypeCode>4</gr:ManureTypeCode> > > <gr:ElementIdentifier>P</gr:ElementIdentifier> > > <gr:ElementQuantity> 6.3</gr:ElementQuantity> > > </eih:ManureTypeStructure> > > </eih:ManureTypeCollection> > > > > <!-- look up information for the codes --> > > <eih:XImanureTypeCollection> > > <eih:XImanureTypeStructure> > > <gr:ManureTypeCode>4</gr:ManureTypeCode> > > <gr:ManureTypeName>Fast gxdning</gr:ManureTypeName> > > </eih:XImanureTypeStructure> > > <eih:XImanureTypeStructure> > > <gr:ManureTypeCode>5</gr:ManureTypeCode> > > <gr:ManureTypeName>Ajle</gr:ManureTypeName> > > </eih:XImanureTypeStructure> > > <eih:XImanureTypeStructure> > > </eih:XImanureTypeCollection> > ></eih> > > > > > >best regards, > > > >Christian Rasmussen > >Denmark
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|