RE: NMTOKENS and xsl:key
You don't say whether this is a schema-aware stylesheet. If it is, then the type xs:NMTOKENS will be recognized, the typed value of @target will be a sequence of tokens, and <xsl:key match="item" use="@target"/> will index the value of each token. If it's not schema-aware then you need to split the value "by hand": <xsl:key match="item" use="tokenize(@target, '\s+')"/> Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Houghton,Andrew [mailto:houghtoa@xxxxxxxx] > Sent: 07 January 2007 22:58 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: NMTOKENS and xsl:key > > > I'm hoping someone on the list might be able to provide some > insight in how I might address the following issue. I'm > using Saxon 8.8 and XSL 2.0 for developing a transform. The > source document looks something like: > > <document> > <section> > <item target="abc def ghi"/> > <item target="foo bar"/> > <item target="abc bar"/> > <item target="def foo"/> > </section> > <section> > <item target="abc"/> > <item target="foo"/> > <item target="ghi bar"/> > </section> > </document> > > The <section> and <item> elements are repeatable and the > target attribute is an NMTOKEN list. > > Since the source document is quite large, I was hoping to use > xsl:key to index each token value in the item's target > attribute so I could query for all the items that might > contain a particular token value, e.g., "foo". > > However, looking at xsl:key it seems to me that it will only > index the entire NMTOKEN list as a single value. What I'm > trying to accomplish when I query for the token value "foo", > is that I want xsl:key to return the following node > list: > > /document/section/item > /document/section/item > /document/section/item > > correspondingly if I query for "abc" I want xsl:key to be > able to return the following node list: > > /document/section/item > /document/section/item > /document/section/item > > does anybody know of anyway I can get xsl:key to index each > token in the NMTOKEN list for the target attribute? I > realize I could write an XPath expression, but continually > iterating over a large document looking for different token > values would be extremely slow which is one of the main > reason why I was looking at using xsl:key. > > Can you think of any alternate solutions to the problem. > > BTW, the tokens in the list are *not* known in advance to the > transform. > > > Thanks, Andy.
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