OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Subject: Re: XSLT 'or' statement (Was Re: DOCBOOK-APPS: How can I getstylesheet to bold?)

On Tue, Jul 31, 2001 at 01:39:38PM -0400, Dan York wrote:
> > <xsl:template match="emphasis">
> >   <xsl:choose>
> >     <xsl:when test="@role='bold'|@role='strong'">  <!-- changed line -->
> >       <xsl:call-template name="inline.boldseq"/>
> >     </xsl:when>
> >     <xsl:otherwise>
> >       <xsl:call-template name="inline.italicseq"/>
> >     </xsl:otherwise>
> >   </xsl:choose>
> > </xsl:template>
> However, in running it through 'xsltproc' I found that I was getting
> an error generated. It actually seemed to work correctly, but gave me
> error messages.  I did some research and found that the 'or' functionality
> of XSLT actually uses the word "or".  So the test needs to be:
>    <xsl:when test="(@role='strong') or (@role='bold')">
> Once I changed that, everything worked fine and no errors were
> produced.  One source for this is on the XPath page at:
>   http://www.w3.org/TR/xpath#booleans
> I was a bit surprised as I expected the "|" symbol to work, but it 
> appears that it is at least not "proper" XSLT.  (At least that is
> what I could see in the docs.)


The '|' operator creates the union of 2 XPath location paths.  The 'or'
operator evaluates the boolean or of two XPath predicates.  Both
predicates and location paths are valid XPath expressions, but they
can be used in completely different contexts:

	Location paths:
		section | sect1 | sect2 | sect3 | sect4 | sect5
		/book/title | /article/title

	Predicates (and similar expressions):
		@role='bold' or @role='strong'
		count(ancestor::section) = 0 or @id='1'

The easiest thing to do is to know when you're dealing with a location
path, and know when you're dealing with a predicate or other such expression.

Hope this helps,


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Powered by eList eXpress LLC