[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Style questions (2 questions)

Subject: Re: Style questions (2 questions)
From: iwantto keepanon <iwanttokeepanon@xxxxxxxx>
Date: Thu, 25 Aug 2005 00:07:43 +0400 (MSD)
iwantto
Wendell Piez writes:
	
> Hi Rodman,

Hi Wendell,

>> <post @tag="reference xml"      href="..." />
>> <post @tag="reference xml xslt" href="..." />
>> <post @tag="reference html"     href="..." />
>> <post @tag="linux"              href="..." />
>> 
>> 
>> reference
>>    xml
>>       xslt
>>    html
>> linux
>>
>> each word is a folder w/ multiple bookmarks in them (ala. del.icio.us).
>> 
>> As I recursed into folders, it would have been nice to get all post(s)
>> that started with the current @tag.  With keys that would be fast,
>> without keys and w/XPath alone it was quite slow.

> I don't think I understand the question. If you're asking "are keys useful for
> things besides grouping things by associated values" the answer is certainly yes.
> In fact the classic use case for keys isn't for grouping at all, but to support
> cross-referencing in general.

Yes, I've used keys outside of grouping also.  To clarify, using the folder analogy above,
when I recurse into a folder I need to find all of my subfolders.  That means I need to get
all 'post' elements that *begin with* a string.  E.g. I open the reference folder and need
all @tag(s) that *begin with* "reference ".  That would be:
   <post @tag="reference xml"      href="..." />
   <post @tag="reference xml xslt" href="..." />  and
   <post @tag="reference html"     href="..." />

But you cant do that with keys ... can you?  Well you could if you chopped off the
@tag at the first space.  But then you could not use that key for : get me all @tag(s)
that begin with "reference xml ".  These folders may go 7 levels deep.  So if I
wanted to, I could declare 7 keys into the same key name.  But I found a better work
around; declare a key where use == folder depth :

   <xsl:key name="depth" match="post"
      use="string-length( @tag ) - string-length( translate( @tag, ' ', '' ) )"
   />

   <xsl:variable name="our-child-folders"
      select="key( 'depth', 1+$depth )[ starts-with( @tag, $current-tag ) ]"
   />

But its all these "work arounds" that seem to be caused by keys _only_ doing equality
comparisons.  I know the reasons for string comparison being only equality (alphabets,
locales, encodings, etc...), is the use of keys driven by the same reasons?

I guess I am just trying to understand keys a little better since they are so useful.

Thx to everyone who answered Q#1 and Q#2, this is a very helpful list ...
-- 
Rodman

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.