|
Subject: Re: [xsl] Pairing elements according to attributes with XSLT 1 From: Andy Kohn <andydev@xxxxxxxxx> Date: Wed, 29 Jul 2009 17:44:03 +1000 |
Thanks again Hermann.
The problem is that putting the sort in there, sorts it using the
first keyword, and not the one that is used to search.
For example, if I run the XLS with this parameters:
<xsl:with-param name="from" select="'small'" />
<xsl:with-param name="to" select="'tiny'" />
With this XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE KeywordsInfo [
<!ELEMENT KeywordsInfo (KeywordsEntry+)>
<!ELEMENT KeywordsEntry (keyword+)>
<!ELEMENT keyword (#PCDATA)>
<!ATTLIST keyword size (big|medium|small|tiny) #REQUIRED>
]>
<KeywordsInfo>
<KeywordsEntry>
<keyword size="big">a-Big</keyword>
<keyword size="small">z-Small</keyword>
<keyword size="tiny">z-Tiny</keyword>
</KeywordsEntry>
<KeywordsEntry>
<keyword size="small">m-Small</keyword>
<keyword size="tiny">m-Tiny</keyword>
</KeywordsEntry>
</KeywordsInfo>
It shows z-Small as the first element (and not m-Small), since it's
sorting using "<keyword size="big">a-Big</keyword>", although I'm
searching from 'small' to 'tiny'
Hope it makes sense, thanks,
Andy.
On Tue, Jul 28, 2009 at 7:40 PM, Hermann
Stamm-Wilbrandt<STAMMW@xxxxxxxxxx> wrote:
>> I'm still stuck with this sorting...
>>
>> Can anyone help me out?
>
> Just insert <xsl:sort> at the right place, here is where you have to:
>
> $ diff -c2 doit.xsl doit.sort.xsl
> *** doit.xsl Tue Jul 28 09:38:50 2009
> --- doit.sort.xsl Tue Jul 28 09:41:16 2009
> ***************
> *** 16,19 ****
> --- 16,20 ----
> fromSize="{$from}" toSize="{$to}">
> <xsl:for-each select="/KeywordsInfo/KeywordsEntry">
> + <xsl:sort/>
> <xsl:variable name="kentry" select="." />
> <xsl:for-each select="keyword[@size=$from]">
>
> $
>
> You may want to consult the spec (default is " select='.' ") which is
> exactly what you want:
> http://www.w3.org/TR/xslt#sorting
>
>
> Btw,:
> I realized that some IBM email gateway seems to modify my submitted
> stylesheets up to being non-XML. I already got confirmation from
> xsl-list owner that for the last post I saw this the email reached the
> list modified. "doit.xsl" is the stylesheet I submitted last time,
> and "doit.save.xsl" is what I just saved via copy and paste from the
> old post, here is the strange diff:
>
> $ diff doit.xsl doit.save.xsl
> 2c2
> < xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> ---
>> xmlns:xsl=".http://www.w3.org/1999/XSL/Transform";>
> 3a4
>>
> 14c15
> < <MainWordInput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> ---
>> <MainWordInput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> 20c21
> < <xsl:variable name="fromkw" select="." />
> ---
>> <xsl:variable name="fromkw" select="." />>
>
> $
>
> Mit besten Gr|_en / Best wishes,
>
> Hermann Stamm-Wilbrandt
> Developer, XML Compiler
> WebSphere DataPower SOA Appliances
> ----------------------------------------------------------------------
> IBM Deutschland Research & Development GmbH
> Vorsitzender des Aufsichtsrats: Martin Jetter
> Geschdftsf|hrung: Erich Baier
> Sitz der Gesellschaft: Bvblingen
> Registergericht: Amtsgericht Stuttgart, HRB 243294
>
>
>
> Andy Kohn
> <andydev@xxxxxxxx
> m> To
> xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> 07/28/2009 08:36 cc
> AM
> Subject
> Re: [xsl] Pairing elements
> Please respond to according to attributes with XSLT 1
> xsl-list@xxxxxxxx
> lberrytech.com
>
>
>
>
>
>
>
>
> I'm still stuck with this sorting...
>
> Can anyone help me out?
>
> Thanks,
>
> Andy
>
> On Fri, Jul 24, 2009 at 12:29 PM, Andy Kohn<andydev@xxxxxxxxx> wrote:
>> That works great! thanks a lot for the help.
>>
>> Now I'm trying to sort it using the data of the node that has attribute
> 'from'
>>
>> For example, with this input, the first one would be AAAA then CCC then
> ZZZZ
>>
>> I tried using <xsl:sort select="keyword[@size=$from]"> but it doesn't
>> seem to order it.
>>
>> <KeywordsInfo>
>> <KeywordsEntry>
>> <keyword size="big">AAAA</keyword>
>> <keyword size="small">table tennis ball</keyword>
>> </KeywordsEntry>
>> <KeywordsEntry>
>> <keyword size="big">ZZZZ</keyword>
>> <keyword size="small">chair 1</keyword>
>> </KeywordsEntry>
>> <KeywordsEntry>
>> <keyword size="big">CCC</keyword>
>> <keyword size="small">chair 2</keyword>
>> </KeywordsEntry>
>> </KeywordsInfo>
>>
>>
>> The result I need:
>>
>> <MainWordInput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xsi:noNamespaceSchemaLocation="entriesResult.xsd"
>> fromSize ="big"
>> toSize="small">
>> <Entries>
>> <first>AAAA</first>
>> <second>table tennis ball</second>
>> </Entries>
>> <Entries>
>> <first>CCC</first>
>> <second>chair 2</second>
>> </Entries>
>> <Entries>
>> <first>ZZZZ</first>
>> <second>chair 1</second>
>> </Entries>
>> </MainWordInput>
>>
>>
>> Thanks all!
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Pairing elements accordin, Michael Kay | Thread | Re: [xsl] Pairing elements accordin, Hermann Stamm-Wilbra |
| RE: [xsl] Pairing elements accordin, Michael Kay | Date | [xsl] Emulating XPATH2 range in XSL, Hermann Stamm-Wilbra |
| Month |