An XPath expression may contain predicates that filter the set of
nodes returned by that XPath. Now, a filter for "book" is written as a
bracketed expression
select="/bookstore/book[ ...predicate expression goes here... ]"
Within the brackets, you are in a certain context: the one established
by the XPath expression up to the opening '['. And filtering
predicates should deal with book elements, referring to their position
within the store, or by investigating book elements such as title or
price.
If you want a combination of restrictions of book positions, you'll
have to write a more complex predicate (= logical expression). If you
are familiar with logical expressions in any programming language it
shouldn't come as a surprise that you can combine any term with
another using the logical operators "and" and "or".
select="/bookstore/book[position() > 1 and position() < 3 ]"
Common sense would make you think that filters can be applied one
after the other as well. So you should try
select="/bookstore/book[position() > 1][position() < 3 ]"
If the result surprises you, ask yourself: what passes through the
first filter?
Also, try
select="/bookstore/book[position() > 1][position() < 3 ]"
A term such as
/bookstore[position() > 1 ]
doesn*t make sense at all. Since /bookstore is the one and only root
element, there won't be another one at any position greater than one.
-W
On 17 December 2011 17:08, Roelof Wobben <rwobben(_at_)hotmail(_dot_)com> wrote:
I found that already.
Im now trying to solve this one :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="/bookstore/book[position() < 3 and
/bookstore[position() > 1 ]" />
</xsl:template>
<xsl:template match="bookstore/book">
<h1><xsl:value-of select="title" /></h1>
<xsl:value-of select="price" />
</xsl:template>
</xsl:stylesheet>
But I see now this message :
Invalid XPath expression
Unexpected end of statement
select="/bookstore/book[position() < 5 and /bookstore[position() > 1 ]"
So i try to find the books between the 1 and 5 position of the list.
Roelof
---------------------------------------- > Date: Sat, 17 Dec 2011 09:24:14
-0500 > From: voldrani(_at_)gmail(_dot_)com > To:
xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com > Subject: Re: [xsl]
Predicates question > > You have a couple of other syntax errors, too. You
forgot to close > your "". Try this: > >
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> method="xml" version="1.0"
encoding="UTF-8" indent="yes"/> > select="/bookstore/book[position()<3]" /> >
select="title"/>
> > On Sat, Dec 17, 2011 at 8:58 AM, Wolfgang Laun wrote: > > > > A basic
requirement for writing XML (and XSLT is XML) is to represent > > all '<'
that are part of the data (element or attribute or other) as > > < > > > >
Another characters in the same category is '&', which must be written > > as
&. when it is a data character (and not part of a character > > reference
that begins with '&'). > > > > (You may also find '>' written as >.) > > > >
There's also a construct known as CDATA section, which is a general > >
"escape" mechanism for element data. See /bookstore/book[2] for > > details
;-) > > > > -W > > > > On 17 December 2011 14:39, Roelof Wobben wrote: > > >
I have this small xml file : > > > > > > > > > > > > > > > > > >
Harry Potter > > > 29.99 > > > > > > > > > > > > Learning XML > >
39.95 > > > > > > > > > > > > > > > > > > > > > And now I want to show only
a few books. > > > > > > According to this page :
http://www.w3schools.com/xpath/xpath_syntax.asp I can use this xslt : > > > >
But if I try this on xmlspy I get this message : > > > > > >
Character '<' is grammatically unexpected > > >
Reason: one of the following is expected (see below) > > >
'"' > > > '&' > > > '&#' > > > '&#x' > > > [^<&"] > > >
Details > > > XML production: Production 'AttValue' not
satisfied > > > > > > > > > > > > What part did I
misunderstood. > > > > > > > > > > > > Roelof > > > > > > >
--~------------------------------------------------------------------
> > > 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: > > > --~-- > > > > > > >
--~------------------------------------------------------------------
> > 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: > > --~-- > > > >
--~------------------------------------------------------------------
> 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:
--~-- >
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--