[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Custom function in template match predicate

Subject: Re: Custom function in template match predicate
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Tue, 23 Sep 2008 13:51:08 -0400
Re:  Custom function in template match predicate
Ian,

Actually the reason this isn't working is has nothing to do with the processor:

<xsl:template match="foo[ my:test('type1',.) = true ]">

The predicated expression "my:test('type1',.) = true" is testing the value returned by the function to the value of the 'true' element child. But there is no foo/true to compare to, hence it's always false.

If you had foo[ my:test('type1',.) = 'true' ] you'd have better luck.

On the other hand, this might be even better:

<xsl:function name="my:test" as="xs:boolean">
   <xsl:param name="fmtcode"/>
   <xsl:param name="context"/>
   <xsl:sequence select="(substring-after($context/@format,':') = $fmtcode)
      and
(namespace-uri-for-prefix(substring-before($context/@format,':'),$context)
       = 'http://example.com/schemas/formats' )/>
</xsl:function>

... and then

<xsl:template match="foo[ my:test('type1',.)]">

(That is, instead of generating and comparing a string, simply generate a Boolean value.)

The @as element indicating the return type of the function is not strictly necessary, but is good practice for several reasons including ease of debugging (you will need to declare the xs: namespace prefix with the XML Schema namespace).


Cheers, Wendell


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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2011 All Rights Reserved.