OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Representing interdependence of elements within a schema or dtd

[ Lists Home | Date Index | Thread Index ]

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






 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS