Edgewall Software

Version 1 (modified by cmlenz, 18 years ago) (diff)

Initial version

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

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 <=.

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 MarkupTemplates#py:match


See also: MarkupGuide?, MarkupStream