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>
--~--