Finding Child Elements of Top-Level XML Schema Elements
[This topic discusses a feature that was only implemented for MSXML 6.0.]
SOM elements that are returned from interface properties originate at the top level of the XML Schema. Top-level elements of an XML Schema are declarations that are not nested inside other declarations.
Example
The following example shows a top-level <ComplexType>
declaration that contains a second-level <element>
declaration.
XML Schema: childsample.xsd
<schema xmlns = "http://www.w3.org/2001/XMLSchema">
<complexType name = "TopLevelType">
<all>
<element name = "SecondLevelElement"/>
</all>
</complexType>
</schema>
To navigate through the schema to the secondary and lower child items, you must use the contentModel property of the ISchemaComplexType interface. This property returns a SchemaModelGroup object. The particles property of the ISchemaModelGroup interface returns a collection of elements, modelGroup
objects, and any
declarations that are in the <complexType>
declaration of the parent element.
Example
In the following example, the schema above, childsample.xsd, is queried from a Visual Basic program.
Dim oSchemaCache as New XMLSchemaCache60
Dim oSchema as ISchema
Dim nsTarget as String
nsTarget = "http://www.samples.microsoft.com/sampletarget"
oSchemaCache.add nsTarget, "childsample.xsd"
Set oSchema = oSchemaCache.getSchema
(nsTarget)
Set oComplexTypes = oSchema.types
Set oContentModelGroup = oComplexTypes
(0).contentModel
Set oChildItems = oContentModelGroup.particles
strElementName = oChildItems
(0).Name
Note
When you use the DOM to find child items, you can go directly to the node you want. With the SOM, however, you must start with a top-level item and drill down through the child elements until you reach the node you want.
See Also
SOM Concepts
Complex Type Definitions
Defining Complex Types