Alberto,
Currently, I have problems with both of your solutions:
- When implementing the 1st solution using grammar->getElemDecl, it
appears that I cannot get the SchemaElementDecl object for elements that
are declared within an imported schema document (i.e., xsd:import)
- When implementing the 2nd solution using XSModel, I do get a valid
XSElementDeclaration, but I cannot get the SchemaElementDecl object from
my XSElementDeclaration, since it does not have a public getter
function.
Any suggestions?
(I guess I can always use the pGrammar->getElemEnumerator() if there is
no other elegant way)
And another question:
If my element is looking like this:
<xsd:element name="TimeMetrics"
type="parlayx_common_xsd:TimeMetrics"/>
<xsd:simpleType name="TimeMetrics">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Millisecond"/>
<xsd:enumeration value="Second"/>
<xsd:enumeration value="Minute"/>
<xsd:enumeration value="Hour"/>
<xsd:enumeration value="Day"/>
<xsd:enumeration value="Week"/>
<xsd:enumeration value="Month"/>
<xsd:enumeration value="Year"/>
</xsd:restriction>
</xsd:simpleType>
Where (in the SchemaElementDecl object) can I find the enumeration
values data?
Actually, my question is more general: Where can I find all the
restrictions like minOccurs, maxOccurs etc?
Thanks,
Ori.
-----Original Message-----
From: Alberto Massari [mailto:[EMAIL PROTECTED]
Sent: Wednesday, August 16, 2006 3:42 PM
To: [email protected]
Subject: RE: Parsing Schema Grammar - waiting for an answer
Hi Ori,
At 16.13 16/08/2006 +0200, Ori Doolman wrote:
>Alberto,
>Thank you for your answer.
>
>Still, I have some questions regarding your suggestion:
>
>1. How do you suggest to parse the grammar given in the xsd:schema
>element within the wsdl document?
You don't have many options; you will have to serialize the DOM node
to a string and parse it with the special DOMBuilder (the one created
with your XMLGrammarPool object)
>2. Should I still use the loadGrammar API of DOMBuilder?
Yes
>3. In your 1st solution, how do I get the grammar instance for calling
>grammar->getElemDecl(...
You can still use DOMBuilder::getGrammar
Alberto
>-----Original Message-----
>From: Alberto Massari [mailto:[EMAIL PROTECTED]
>Sent: Wednesday, August 16, 2006 10:16 AM
>To: [email protected]
>Subject: Re: Parsing Schema Grammar - waiting for an answer
>
>Hi Ori,
>
>At 09.40 16/08/2006 +0200, Ori Doolman wrote:
> >Hello,
> >
> >Since the grammar section is not documented and I couldn't find my
> >answer elsewhere, I asked a question a few days ago (see my previous
> >email to this list), but still didn't get any answer.
> >
> >I'll appreciate your help.
>
>Your approach may work; you could avoid the enumeration of the
>elements in the grammar by:
>- creating an instance of XMLGrammarPoolImpl
>- instanciating the DOMBuilder using
>createDOMBuilder(MODE_SYNCHRONOUS, NULL,
>XMLPlatformUtils::fgMemoryManager, grammarPool)
>- using
>grammar->getElemDecl(grammarPool->getURIStringPool()->getId("parlayx_ca
l
>l_notification_local_xsd"),
>"handleBusy", NULL, Grammar::TOP_LEVEL_SCOPE)
>
>Another option is building an XSModel using grammarPool->getXSModel().
>Then, use XSModel::getElementDeclaration("handleBusy",
>"parlayx_call_notification_local_xsd") and examine the element
>definition.
>This because the informations stored in the SchemaGrammar object are
>optimized to validate the data, while the XSModel data structure
>tries to keep all the informations in the schema (including
>annotations).
>
>Hope this helps,
>Alberto