[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Syntax
sxml-match
provides case
-like form for pattern matching of XML
nodes.
- Scheme Syntax: sxml-match input-expression clause1 clause2 …
Match input-expression, an SXML tree, according to the given clauses (one or more), each consisting of a pattern and one or more expressions to be evaluated if the pattern match succeeds. Optionally, each clause within
sxml-match
may include a guard expression.
The pattern notation is based on that of Scheme’s syntax-rules
and
syntax-case
macro systems. The grammar for the sxml-match
syntax
is given below:
match-form ::= (sxml-match input-expression clause+) clause ::= [node-pattern action-expression+] | [node-pattern (guard expression*) action-expression+] node-pattern ::= literal-pattern | pat-var-or-cata | element-pattern | list-pattern literal-pattern ::= string | character | number | #t | #f attr-list-pattern ::= (@ attribute-pattern*) | (@ attribute-pattern* . pat-var-or-cata) attribute-pattern ::= (tag-symbol attr-val-pattern) attr-val-pattern ::= literal-pattern | pat-var-or-cata | (pat-var-or-cata default-value-expr) element-pattern ::= (tag-symbol attr-list-pattern?) | (tag-symbol attr-list-pattern? nodeset-pattern) | (tag-symbol attr-list-pattern? nodeset-pattern? . pat-var-or-cata) list-pattern ::= (list nodeset-pattern) | (list nodeset-pattern? . pat-var-or-cata) | (list) nodeset-pattern ::= node-pattern | node-pattern ... | node-pattern nodeset-pattern | node-pattern ... nodeset-pattern pat-var-or-cata ::= (unquote var-symbol) | (unquote [var-symbol*]) | (unquote [cata-expression -> var-symbol*])
Within a list or element body pattern, ellipses may appear only once, but may be followed by zero or more node patterns.
Guard expressions cannot refer to the return values of catamorphisms.
Ellipses in the output expressions must appear only in an expression context; ellipses are not allowed in a syntactic form.
The sections below illustrate specific aspects of the sxml-match
pattern
matcher.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on April 20, 2013 using texi2html 5.0.