xsl-list
[Top] [All Lists]

Re: most efficient way to check for a group of tags?

2005-03-02 14:36:35
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/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


======================================================================
Wendell Piez                            
mailto:wapiez(_at_)mulberrytech(_dot_)com
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
======================================================================


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--