Well,
I've been digging around a lot to understand what Xerces does and does
not allow and there seems to be some problem with Xerces here. If I
follow your tip and use the ContentSpecNode I end up in a dead end. I
can get the ContentSpec, but it doesn't do me much good, all that it
seems to allow is retrieving a "formatted content model", sometimes:
ContentSpecNode* pSpecNode = element.getContentSpec();
if ( pSpecNode )
{
XMLElementDecl* pElemDecl = pSpecNode->getElementDecl();
if ( pElemDecl )
{
XMLCh const* szModel =
pElemDecl->getFormattedContentModel();
}
}
Alternatively I can get the content model another way by doing this:
XMLContentModel* pModel = element.getContentModel();
Where the 'element' came from SchemaGrammar::getElemEnumerator().
But casting pModel to something like SimpleContentModel doesn't help
because the class ContentLeafNameTypeVector isn't exported from Xerces
so it generates a link error (even though XMLContentModel let's you
access it with an API):
void XsdGraph::GetContentVector(SimpleContentModel* pModel)
{
ContentLeafNameTypeVector* pVector =
pModel->getContentLeafNameTypeVector();
if ( pVector )
{
for ( unsigned int i = 0; i < pVector->getLeafCount(); i++ )
{
wcout <<
L"Name: " << pVector->getLeafNameAt(i)->getLocalPart()
<<
L" Type: " << pVector->getLeafTypeAt(i) << endl;
}
}
}
So you have apparently two designs here: one internal to the library and
one for clients of the library, or so it seems.
Anyways, I'm back at my original question: what's the way to get the
list of parent/child relationships in a schema (elements and their
sub-elements, types and their sub-types) in order to build something
like a dependency graph from the schema elements?
Yours,
Elisha Berns
> -----Original Message-----
> From: Gareth Reakes [mailto:[EMAIL PROTECTED]
> Sent: Friday, March 18, 2005 6:51 AM
> To: [email protected]
> Subject: Re: Advanced novice question about PSVI
>
> Hey,
>
> >
> > There is a general mapping between schema types and application
classes.
> > Think of it as a way to save an application as a graph provided you
know
> > what the node definitions are ahead of time.
> >
>
> Good, that will help a lot.
>
>
> >
> > Well I see this in the PSVI classes and I have started development
on
> > it, but here is really where my questions are: How do you get all
the
> > sub elements of complexContent or other composite types?
>
> Take a look at the Grammar class. This will lead you on to things like
> SchemaElementDecl which has getContentSpec. That method will give you
a
> content model.
>
>
> Regards,
>
> Gareth
>
> --
> Gareth Reakes, Managing Director Parthenon Computing
> +44-1865-811184 http://www.parthcomp.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]