[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Style questions (2 questions)
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
|
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
|