[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Hi Sebastian,
At 03:37 PM 3/2/2005, you wrote:
I have my doubts about its being more efficient (from several points of view it is likely to be less so), but a more explicit XSLT approach might at least *read* a bit more accessibly (whatever a processor does with it) --
Then number($tags-count) is your count (remember $tags-count itself is a result tree fragment, which here contains a single text node with the value).
Another way of simplifying this is to preprocess your input, for example by adding an attribute flag to all the element types you want to count. Then you collect them using that flag, instead of by name.
The schema-awareness feature of XSLT 2.0 that Mike mentioned in connection with this might be considered to be an extremely sophisticated version of the last approach -- the schema annotates the document with type information, which you can then use in your transform.
Re: [xsl] most efficient way to check for a group of tags?
Subject: Re: [xsl] most efficient way to check for a group of tags? From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> Date: Wed, 02 Mar 2005 16:36:35 -0500 |
Hi Sebastian,
At 03:37 PM 3/2/2005, you wrote:
I've got a template that needs to know the if it contains only 1 of a specific group of tags when it's within a "content" tag, and I've got this condition to do this:
count(ancestor::content[1]/child::*[self:tag1 or self:tag2 or self:tag3 ....]) = 1
Now I need to check for about 15 different tags; is there a more efficient way to do this sort of check?
I have my doubts about its being more efficient (from several points of view it is likely to be less so), but a more explicit XSLT approach might at least *read* a bit more accessibly (whatever a processor does with it) --
<xsl:variable name="tags-count"> <xsl:for-each select="ancestor::content[1]"> <xsl:value-of select="count(tag1|tag2|tag3|etc)"/> </xsl:for-each> </xsl:variable>
Then number($tags-count) is your count (remember $tags-count itself is a result tree fragment, which here contains a single text node with the value).
Another way of simplifying this is to preprocess your input, for example by adding an attribute flag to all the element types you want to count. Then you collect them using that flag, instead of by name.
The schema-awareness feature of XSLT 2.0 that Mike mentioned in connection with this might be considered to be an extremely sophisticated version of the last approach -- the schema annotates the document with type information, which you can then use in your transform.
Cheers, Wendell
__________________________________ Celebrate Yahoo!'s 10th Birthday! Yahoo! Netrospective: 100 Moments of the Web http://birthday.yahoo.com/netrospective/
====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] most efficient way to che, Michael Kay | Thread | Re: [xsl] most efficient way to che, Sebastien Boisvert |
RE: [xsl] Problem with converting t, Michael Kay | Date | Re: [xsl] TOC Problem, Wendell Piez |
Month |