annotate doc/xpath.txt @ 394:ebc7c1a3bc4d

Minor doc fixes.
author cmlenz
date Thu, 28 Dec 2006 17:50:40 +0000
parents 24757b771651
children ca7d707d51b0 1837f39efd6f
rev   line source
226
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
1 .. -*- mode: rst; encoding: utf-8 -*-
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
2
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
3 =====================
230
24757b771651 Renamed Markup to Genshi in repository.
cmlenz
parents: 226
diff changeset
4 Using XPath in Genshi
226
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
5 =====================
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
6
230
24757b771651 Renamed Markup to Genshi in repository.
cmlenz
parents: 226
diff changeset
7 Genshi provides basic XPath_ support for matching and querying event streams.
226
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
8
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
9 .. _xpath: http://www.w3.org/TR/xpath
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
10
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
11
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
12 .. contents:: Contents
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
13 :depth: 2
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
14 .. sectnum::
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
15
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
16
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
17 -----------
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
18 Limitations
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
19 -----------
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
20
230
24757b771651 Renamed Markup to Genshi in repository.
cmlenz
parents: 226
diff changeset
21 Due to the streaming nature of the processing model, Genshi uses only a subset
226
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
22 of the `XPath 1.0`_ language.
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
23
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
24 .. _`XPath 1.0`: http://www.w3.org/TR/xpath
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
25
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
26 In particular, only the following axes are supported:
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
27
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
28 * ``attribute``
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
29 * ``child``
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
30 * ``descendant``
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
31 * ``descendant-or-self``
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
32 * ``self``
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
33
230
24757b771651 Renamed Markup to Genshi in repository.
cmlenz
parents: 226
diff changeset
34 This means you can't use the ``parent``, ancestor, or sibling axes in Genshi
226
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
35 (the ``namespace`` axis isn't supported either, but what you'd ever need that
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
36 for I don't know). Basically, any path expression that would require buffering
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
37 of the stream is not supported.
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
38
394
ebc7c1a3bc4d Minor doc fixes.
cmlenz
parents: 230
diff changeset
39 Predicates are of course supported, but path expressions *inside* predicates
226
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
40 are restricted to attribute lookups (again due to the lack of buffering).
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
41
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
42 Most of the XPath functions and operators are supported, however they
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
43 (currently) only work inside predicates. The following functions are **not**
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
44 supported:
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
45
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
46 * ``count()``
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
47 * ``id()``
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
48 * ``lang()``
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
49 * ``last()``
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
50 * ``position()``
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
51 * ``string()``
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
52 * ``sum()``
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
53
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
54 The mathematical operators (``+``, ``-``, ``*``, ``div``, and ``mod``) are not
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
55 yet supported, whereas the various comparison and logical operators should work
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
56 as expected.
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
57
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
58 You can also use XPath variable references (``$var``) inside predicates.
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
59
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
60
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
61 ----------------
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
62 Querying Streams
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
63 ----------------
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
64
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
65 ::
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
66
230
24757b771651 Renamed Markup to Genshi in repository.
cmlenz
parents: 226
diff changeset
67 from genshi.input import XML
226
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
68
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
69 doc = XML('''<doc>
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
70 <items count="2">
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
71 <item status="new">
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
72 <summary>Foo</summary>
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
73 </item>
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
74 <item status="closed">
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
75 <summary>Bar</summary>
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
76 </item>
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
77 </items>
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
78 </doc>''')
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
79 print doc.select('items/item[@status="closed"]/summary/text()')
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
80
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
81 This would result in the following output::
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
82
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
83 Bar
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
84
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
85
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
86 ---------------------
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
87 Matching in Templates
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
88 ---------------------
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
89
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
90 See the directive ``py:match`` in the `XML Template Language Specification`_.
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
91
09f869a98149 Add reStructuredText documentation files.
cmlenz
parents:
diff changeset
92 .. _`XML Template Language Specification`: xml-templates.html
Copyright (C) 2012-2017 Edgewall Software