[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: exclusions
At the moment to model an exclusion in TREX, you have to use concur. Here's an example from the XHTML DTD: <define name="a"> <element name="a"> <ref name="a.attlist"/> <concur> <ref name="Inline.model"/> <ref name="a.concur"/> </concur> </element> </define> <define name="a.concur"> <grammar> <start name="not.excluded"> <zeroOrMore> <choice> <element> <not> <name>a</name> </not> <zeroOrMore> <attribute> <anyName/> </attribute> </zeroOrMore> <ref name="not.excluded"/> </element> <anyString/> </choice> </zeroOrMore> </start> </grammar> </define> While this is kind of cool, it is not easy to write, nor is it obvious to a reader what the intent is. It also suffers from all the disadvantages that are entailed by use of concur (as I outlined in my previous message). One alternative would be to have an element that supported exclusions directly: <define name="a"> <element name="a"> <ref name="a.attlist"/> <excludeElement name="a"> <ref name="Inline.model"/> </excludeElement> </element> </define> Like the "element" and "attribute" elements, the "excludeElement" element would have either a "name" attribute or a child element specifying a name class. The semantics of <excludeElement> nc p </excludePattern> would be that it matches any sequence that matches p and that does not contain at any depth an element whose name matches nc. This has a nice simple semantics, is not hard to implement and can be "transformed out". <excludeElement> nc <choice> p1 p2 </choice> </excludeElement> => <choice> <excludeElement> nc p1 </excludeElement> <excludeElement> nc p2 </excludeElement> </choice> <excludeElement> nc1 <element> nc2 p </element> </excludeElement> => <element> <difference> nc2 nc1 </difference> p </element> etc. Are exclusions important enough to be worth this? My feeling is that they are important enough for documents (eg footnotes don't nest) to justify this. James
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC