Re: [xsl] [XPath] matching elements which satisfy a specific content model

Subject: Re: [xsl] [XPath] matching elements which satisfy a specific content model
From: David Carlisle <davidc@xxxxxxxxx>
Date: Mon, 13 Jan 2003 10:48:43 GMT
> I this a full equivalent?

not on its own, I did * not +.

variablelist[varlistentry and *[(position()=1 and self::title) or self::varlistentry]]>

is one way of fixing it.

But it's probably easier to leave that as it is and have
a separate 
<xsl:template match="variablelist[title and not(varlistentry)]"
priority="2"> to pick up the edge case.



I find it's rare to ever need this kind of test though.

If your input may include

<variablelist>
   <title></title>
</variablelist>


and


<variablelist>
   <title></title>
   <varlistentry/>
</variablelist>


how do you want them to be processed?
If the first is an error you can arrange to dtd validate before
transforming in which case such fragments will never get as far as XSLt
so you don't need to check for them in the pattern.

If validation is not an option it's often simpler to match on the
simpler * case but then have
<xsl:if test="not(varlistentry)">...

Do you really have a case where you want to accept both these things but
teh reulting output is so different that you don't want to share a
template for the two cases?

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread