inclusions/exclusions/named groups

Neil Bradley neil at bradley.co.uk
Wed Dec 17 21:22:22 GMT 1997



> I am a amateur in xml and hope anyone can help me.
> 
> I try to transform a SGML-DTD into XML (I use MSXML-parser).
> My questions are:
> 
> 1) Neither SGML-inclusions nor -exclusions are allowed in XML!? How can I
>    express this in XML?
>    
>    my sgml-dtd:
> 
>    <!ELEMENT LE - - ((a , b , c+) , d , e) +(f , g , h) >
>    <!ELEMENT m - - (o | (#PCDATA))+ >
>    <!ELEMENT c - - (l , (m | n)+) >
>    ...
>    <!ELEMENT e - - (i , (j , k)+) -(h)>

First, let's simplify your SGML DTD, which has too many brackets in 
it:

<!ELEMENT LE - - (a , b , c+ , d , e)    +(f , g , h) >
<!ELEMENT m - - (o | #PCDATA)+ >
<!ELEMENT c - - (l , (m | n)+) >
...
<!ELEMENT e - - (i , (j , k)+)    -(h)>

Putting the PCDATA in the right place for XML, and removing the 
minimization tokens, we get:

<!ELEMENT LE  (a , b , c+ , d , e)    +(f , g , h) >
<!ELEMENT m   ( #PCDATA|o)+ >
<!ELEMENT c    (l , (m | n)+) >
...
<!ELEMENT e    (i , (j , k)+)    -(h)>

So you want f, g and h to be accessible in a, b, c, d and e, but also 
in l, m and n, but only f and g in i, j and k. Of course, you may not 
want any of these directly in LE, c and/or e, though inclusions 
automatically allow this. Only you can decide. Assuming that you do want them...

<!ELEMENT LE  ((f|g|h)*, a ,(f|g|h)*,  b ,(f|g|h)*, (c|f|g|h)+ 
,(f|g|h)*, d ,(f|g|h)*,  e(f|g|h)*)>
<!ELEMENT m   ( #PCDATA|o|f|g|h)+ >
<!ELEMENT c    ((f|g|h)*,l , (f|g|h)*, (m |n|f|g|h)+) >
...
<!ELEMENT e    ((f|g)*,i , (f|g)*, (j, (f|g)* , k (f|g)*)+)>

In one sense you are lucky in this example, because you do not have 
the same element having different content depending on its context. 
Suppose the following:

<!ELEMENT chapter - - (para*, section*) >
<!ELEMENT para - - (#PCDATA)>
<!ELEMENT section (para+) +(xref)>

Here, the para element may have an xref, but only if it apepars 
inside a section element. To do this in XML requires the definition 
of a new element, perhaps called sect_para

<!ELEMENT para - - (#PCDATA|xref)*>

Neil.





-----------------------------------------------
Neil Bradley - Author of The Concise SGML Companion.
neil at bradley.co.uk
www.bradley.co.uk

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)




More information about the Xml-dev mailing list