Version 2 (modified by cmlenz, 18 years ago) (diff) |
---|
Using XPath in Markup
Markup provides basic XPath support for matching and querying event streams.
Limitations
Due to the streaming nature of the processing model, Markup uses only a subset of the XPath 1.0 language.
In particular, only the following axes are supported:
- attribute
- child
- descendant
- descendant-or-self
- namespace (not completed yet)
- self
This means you can't use the ancestor, parent, or sibling axes in Markup. Basically, any path expression that would require buffering of the stream is not supported.
In addition, Markup does not (yet) support numeric types in XPath: everything is treated as text or booleans. For that reason, relational or additive operators such as >, <, or <= are not supported right now.
Querying Streams
from markup.input import XML doc = XML('''<doc> <items count="2"> <item status="new"> <summary>Foo</summary> </item> <item status="closed"> <summary>Bar</summary> </item> </items> </doc>''') print doc.select('items/item[@status="closed"]/summary/text()')
This would result in the following output:
Bar
Matching in Templates
See also: MarkupGuide?, MarkupStream