xsl-list
[Top] [All Lists]

Re: Patterns usage in XSLT template rules

2005-05-02 09:33:44
Hi,

At 08:40 AM 5/2/2005, Bruce wrote:
On 5/2/05, Ramkumar Menon <ramkumar(_dot_)menon(_at_)gmail(_dot_)com> wrote:
> I run into a compilation error while using this stylesheet..
>
>   <xsl:template match="(/)">
>     <o1:NeverPrints/>
>   </xsl:template>

It should be just "/", in the same way that it's "foo" not "(foo)".

The reason for this is that match patterns cannot contain just any arbitrary XPath expression: they have their own grammar, which doesn't include matching on elements grouped with the "( )" operator.

You couldn't say match="2 + 1" either, since although "2+1" is valid XPath (it returns the number 3), it doesn't match the grammar for patterns. But you could say apply-templates select="(/)" and be okay -- since apply-templates' "select" takes any XPath (as long as, in this case, it returns a node-set), not just a pattern.

Learning the restrictions on patterns (you can't say match="preceding-sibling::*" either) and understanding the reason for them (back to the processing model) is part of a full understanding of XSLT.

Cheers,
Wendell


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



<Prev in Thread] Current Thread [Next in Thread>