[xsde-users] Cannot get the value
Keith Oppenheim
KOppenheim at nextpointnetworks.com
Thu Jul 3 18:09:33 EDT 2008
Hi Boris,
The schema fragment attached by Khuong comes directly from the NETCONF
schema defined in RFC 4741. The schema defines a <source> element
that's nested inside of a <get-config> element. The <source> element is
of type="getConfigSourceType":
<xs:complexType name="getConfigSourceType">
<xs:choice>
<xs:element ref="config-name"/>
<xs:element name="url" type="configURIType"/>
</xs:choice>
</xs:complexType>
The schema is structured to give the user flexibility in defining the
element nested within <source>. The user can nest one of <running/>,
<candidate/>, or <startup/> elements within <source>. Alternatively,
via the substitution group mechanism, the user can nest any user-defined
element as long as it derives from configNameType and uses <config-name>
as the head of its substitution group.
Regards,
Keith Oppenheim
NextPoint Networks, Inc.
-----Original Message-----
From: xsde-users-bounces at codesynthesis.com
[mailto:xsde-users-bounces at codesynthesis.com] On Behalf Of Boris
Kolpackov
Sent: Wednesday, June 25, 2008 9:25 AM
To: Khuong Nguyen Thi Lien
Cc: xsde-users at codesynthesis.com
Subject: Re: [xsde-users] Cannot get the value
Hi Khuong,
Khuong Nguyen Thi Lien <ntlkhuong at tma.com.vn> writes:
> <xs:complexType name="configNameType"/>
>
> <xs:element name="config-name" type="configNameType"
> abstract="true"/>
>
> <xs:element name="startup" type="configNameType"
> substitutionGroup="config-name"/>
>
> <xs:element name="candidate" type="configNameType"
> substitutionGroup="config-name"/>
>
> <xs:element name="running" type="configNameType"
> substitutionGroup="config-name"/>
>
This schema does not make much sense since the elements that substitute
config-name (startup, candidate, and running) all use the same type as
config-name. Normally you would have types derived from configNameType
for startup, candidate, and running, for example (normally such types
would also include additional elements/attributes):
<xs:complexType name="startupType">
<complexContent>
<extension base="configNameType"/>
</complexContent>
</xs:complexType>
<xs:element name="startup" type="startupType"
substitutionGroup="config-name"/>
<xs:complexType name="candidateType">
<complexContent>
<extension base="configNameType"/>
</complexContent>
</xs:complexType>
<xs:element name="candidate" type="candidateType"
substitutionGroup="config-name"/>
<xs:complexType name="runningType">
<complexContent>
<extension base="configNameType"/>
</complexContent>
</xs:complexType>
<xs:element name="running" type="runningType"
substitutionGroup="config-name"/>
Then you would implement parser skeletons for each of them and
add them to the map that is used to parse config-name. During
parsing, depending on the actual element name found in XML (e.g.,
running, startup, etc.), the corresponding parser skeleton will
be executed.
Boris
More information about the xsde-users
mailing list