Your example and question indicate that you need to
understand that a schema does not indicate a "root node" and that's why you've
gotten the answers you have. However, if you ask a different question, "How can
I identify the elements likely to be used as root nodes?" you might get a
different answer. You have omitted the detail in your example, but it is
probably true that the comment element is a possible child of the purchaseOrder
element.
The traditional heuristic that tools use to
find candidate root nodes from a DTD (and now schema) is to find all
descendants of each top-level element. Any element that doesn't appear as
another element's descendent is a candidate root node. This heuristic has been
used with good results with both SGML and XML for many years when, e.g., a
tool wants to display a DTD/schema graphically as a tree.
Having said that, note the following:
- It is possible that this heuristic will not turn
up any elements (recursive root) or more than one element.
- Regardless, any top-level element can
serve as a root node.
Consequently, a user interface that needs to
identify a root node should always display all top-level elements and allow the
user to choose. As a convenience, it might use the heuristic to pre-select one
of the elements as the default root.
Bob Foster
----- Original Message -----
Sent: Friday, October 10, 2003 6:24
AM
Subject: [xml-dev] Help for finding root
node from XML Schema
Hello all,
I am new to XML and XML Schema. I am working on a
project which involves visual display of XML Schema. For parsing XML
Schema I am using MSXML 4.0
My problem is How to get element which will
become root element of XML document which uses this schema.
e.g.
PO.xsd
<xsd:element name="purchaseOrder"
type="PurchaseOrderType" />
<xsd:element name="comment"
type="xsd:string"/>
<xsd:complexType
name="PurchaseOrderType"> <xsd:sequence> ... </xsd:sequence> <xsd:attribute
name="orderDate"
type="xsd:date"/> </xsd:complexType>
</xsd:schema>
When I parse above schema first call to
get_childs returns two childs 1 ) comment 2) purchaseOrder.
So how to determine which is root?
Thanks & Regards, Priti
Patil
|