[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [relax-ng] A mechanism for handling inclusion/exclusion
> Suppose that we want to disallow <a>, <em>, and <span> to have > immediate or non-immediate subordinate <a>, <em>, and <span>, > respectively. A schema (in the compact syntax) for this constraint is > shown below: > a = > element a { > mixed{ > (([not(ancestor::em)], em) | ([not(ancestor::span)], span))* > } > } > > span = > element span { > mixed{ > (([not(ancestor::a)], a) | ([not(ancestor::em)], em))* > } > } > > em = > element em { > mixed{ > (([not(ancestor::span)], span) | ([not(ancestor::a)], a))* > } > } I think it's a little confusing to have context be handled as a new kind of pattern. Would it be possible instead to handle it in the name-class? Your example might be written instead as: a = element a - a//a { mixed { (em|span)* } } span = element span - span//span { mixed { (a|em)* } } em = element em - em//em { mixed { (span|a)* } } James
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]