Representing interdependence of elements within a schema or dtd
Hi Everyone, I am new to this list so if I am in the wrong place please point me elsewhere. I have a question relating to dependencies between parts of an xml document. So far in the XML books that I have read there is no reference to this problem that I can find. I am constructing and transmitting an XML document that gradually gathers more elements as it travels about. The elements that it gathers are contributions to the document from different predefined sources - i.e. there is a pre-established structure to the document, but initially the structure is just a framework that gets filled in as the document moves from person to person. My problem is that the elements are interdependent - some elements cannot be present if others are absent, and vice versa. For example, suppose the basic structure was: <doc> <part1> <body>....</body> <part1_annex>....</part1_annex> </part1> <part2> <body>....</body> <part2_annex1>....</part2_annex1> <part2_annex2>....</part2_annex2> </part2> <binder>....</binder> <doc> Initially both <part1> and <part2> are optional. The <_annex>es of <part1> and <part2> cannot be present without the corresponding <body>s. And the <binder> element can only be present if both <part1> or <part2> are present and complete. The only way I can find of representing this arrangement in a schema or dtd is to have a different schema or dtd at each state of the document. In the first "Incomplete" state, <part1/part2> are both optional, and within each the <body> is mandatory and the <_annex>es are optional. The <binder> part is absent altogether. Once I have <part1> and <part2> completed, i.e. all bodies and annexes present, the document moves to the "ready to bind" state, in which all the <part1/part2> <body>s and <_annex>es become mandatory and the <binder> part appears as an optional element. Finally, when the <binder> element is added the whole document is complete and moves to the "Bound" state in which all elements are mandatory. Using a separate schema for each of the three states turns out to be a very clumsy way of handling things. In the example above it is just about manageable but where there are many levels and elements/sub elements it is almost impossible to represent. How can I easily define the interdependence between all these parts within a single schema or dtd, so that the document can move through different states, each state having different rules about the presence or absence of the different parts? John
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format