(The context of a node is its sequence of ancestors.)
A context expression is a sequence of context terms:
contextexp -> contextterm*It matches a context if the context can be decomposed into consecutive fragments, each matched by a context term.
A context term either matches an arbitrary fragment or a single element:
contextterm -> <SomeElements/> | <Element (IDRef="element ID" | Name="element name")?> attributedescr* </Element>(Context expressions always implicitly start with a <SomeElements/>.)
DSD context patterns are reminiscent of CSS selectors.
Examples:
<Constraint> <Not> <Context> <Element Name="a"/><SomeElements/><Element Name="a"/> </Context> </Not> </Constraint> |
(This is placed as a constraint to a.)