Subject: [xsl] key grouping with non-existing or empty elements From: Xiaocun Xu <xiaocunxu@xxxxxxxxx> Date: Tue, 24 Dec 2002 13:02:26 -0800 (PST) |
Hi, I have a question regarding grouping with key. Following is the input XML example: <row row="1"> <cell column="1">default_item1</cell> <cell column="6"></cell> </row> <row row="2"> <cell column="1">default_item2</cell> </row> <row row="3"> <cell column="1">lot01_item1</cell> <cell column="6">lot01</cell> </row> <row row="4"> <cell column="1">lot02_item2</cell> <cell column="6">lot02</cell> </row> I have a number of items that need to be grouped by lot (cell[column=6]). As you can see, this cell is optional. I need to group rows that does not have cell[6] and rows have cell[6] as empty string into the same group, then process each of the row within the group via: <xsl:apply-templates select="key('lineitemLotsKey', $lotName)" mode="LineItem"/> The way I currently handling this is not very elegent: 1. create a key on lot (cell 6) for all rows with cell 6 element: <xsl:variable name="LineItemLotColumn" select="6"/> <xsl:key name="lineitemLotsKey" match="//row[@row > $LineItemHeaderRow and (cell[@column=$LineItemLotColumn])]" use="cell[@column=$LineItemLotColumn]"/> 2. create a separate variable that contains rows that does not have cell 6 element: <xsl:variable name="LineItemDefaultLot" select="//row[@row > $LineItemHeaderRow and not(cell[@column=$LineItemLotColumn])]"/> 3. process $LineItemDefaultLot separately. 4. when process rows in key lineitemLotsKey, check for string(cell[6]). If empty, then does similar processing as #3. Of course, a slight improvement would be for #2, instead of get all rows that does not have cell 6 element, also get all rows that has cell 6 element equal to empty string. That way, I would not need to check for string(cell[6]) in step #4. Is there a more elegent way than these above? Thanks, Xiaocun xiaocunxu@xxxxxxxxx __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] How to output open/close , Passin, Tom | Thread | Re: [xsl] key grouping with non-exi, Joerg Heinicke |
RE: [xsl] How to output open/close , Ed Blachman | Date | [xsl] use variable as node-set for , Xiaocun Xu |
Month |