You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by Nicolas Tsokas <ts...@ekt.gr> on 2006/03/01 13:00:57 UTC

Attribute namespace info through PSVI. Please help...!

Hi everyone,

 

I'm trying to obtain info about an element using PSVI (trying to resolve
allowed children and attributes

for that specific element).

 

I obtain a pointer to the corresponding ComplexTypeInfo object which
describes the element. Then I

get the names and namespaces of the allowed children for that element by
using ComplextTypeInfo's 

elementAt(index) method and by obtaining pointers to SchemaElementDecl
objects.

 

I have a problem with the attributes, though:

I get the list of attributes through getAttDefList() method of the
ComplexTypeInfo object.

Then I obtain a SchemaAttDef for each attribute. SchemaAttDef gives the
attribute's name

through its method getFullName(), but I cannot figure out any way of finding
their namespaces

(or namespace prefixes). Am I missing something?...

 

Can anybody please help me?

 

Thank you so much in advance.

 

Nicolas


RE: Attribute namespace info through PSVI. Please help...!

Posted by Nicolas Tsokas <ts...@ekt.gr>.
Alberto...

The thing is working now!

Saying a big THANKS is the least I can do...

I'm sure I would have never been able to resolve that issue myself...

Congratulations and thanks again.

Nicolas

-----Original Message-----
From: Alberto Massari [mailto:amassari@datadirect.com] 
Sent: Friday, March 03, 2006 12:53 PM
To: Nicolas Tsokas
Cc: c-dev@xerces.apache.org
Subject: RE: Attribute namespace info through PSVI. Please help...!

Hi Nicolas,
I finally tracked down the issue; I placed a breakpoint inside the 
SchemaAttDef constructor and used the Object Inspector to see its 
values (and they were good), then I did the same on the pointer 
returned by getAttDef(). So I noticed that the values were shifted, 
and the fAttName was now assigned to 0xFFFFFFE (i.e. -2, or 
XMLElementDecl::fgInvalidElemId) that was previously the value of the 
fElemId field.
The reason for this different memory layout was that the Xerces 
project specifies the option "Treat enum types as ints", while the 
project that BC6 creates by default doesn't specify it. Enabling this 
option for your testcase fixed the problem.

Hope this helps,
Alberto

At 08:09 AM 3/3/2006 +0200, Nicolas Tsokas wrote:
>Hi Alberto,
>
>I have noticed those bogus addresses as well... It is a bit as if those
>objects are not valid any more...
>
>I noticed the following comment in file SchemaAttDef.hpp:
>
>// ----------------------------------------------------------------------
>// Partial implementation of PSVI
>// The values these methods return are only accurate until the DOMAttr
>// is created that uses the values. After this a clean up method is called
>// and the SchemaAttDef may be used again.
>// note that some of this information has dependancies. For example,
>// if something is not valid then the information returned by the other
>// calls may be meaningless
>// See http://www.w3.org/TR/xmlschema-1/ for detailed information
>// ----------------------------------------------------------------------
>
>To tell the truth I didn't understand the exact meaning. But maybe it has
>something to do with those invalidated objects... (?) I was wondering if
>that class SchemaAttDef (or XMLAttDef too) should only be used DURING
>parsing... ? And not AFTER parsing like I'm doing... Is that possible?
>
>Thank you so much Alberto for everything.
>
>Nicolas
>
>
>-----Original Message-----
>From: Alberto Massari [mailto:amassari@datadirect.com]
>Sent: Thursday, March 02, 2006 7:09 PM
>To: Nicolas Tsokas
>Cc: c-dev@xerces.apache.org
>Subject: RE: Attribute namespace info through PSVI. Please help...!
>
>Hi Nicolas,
>thanks for sending the code; I tried with my usual setup (Visual C++
>6.0) and it worked just fine. So I tried with Borland C++ 6, and I
>see that the attribute name (and other members of the attribute
>definition) are set to bogus addresses like 0xFFFFFFE. I am
>investigating how this could happen, but I am not very confortable
>debugging from inside BC6...
>
>Alberto
>
>At 12:44 PM 3/2/2006 +0200, Nicolas Tsokas wrote:
> >Alberto,
> >
> >I used the code you just gave to me. I'm trying to get a pointer to a
QName
> >object, but it seems that that object is invalid.
> >I get the pointer to QName, but then no matter which method of QName I
call
> >I get an exception (Access in invalid memory).
> >
> >XMLAttDefList& attrIter=pComplexType->getAttDefList();
> >for(unsigned int i=0;i<attrIter.getAttDefCount();i++)
> >{
> >     XMLAttDef& attr=attrIter.getAttDef(i);
> >     XMLAttDef::DefAttTypes ty = attr.getDefaultType();
> >     if(ty == XMLAttDef::Prohibited)
> >             continue;
> >     SchemaAttDef* pAttr=(SchemaAttDef*)&attr;
> >     QName* qname = pAttr->getAttName();
> >     unsigned int uriid = qname->getURI(); --> I always get an exception
>here
> >         // qname object is invalid
> >}
> >
> >I noticed that you get the ComplexTypeInfo by reference and not a pointer
> >
> >--> ComplexTypeInfo& curTypeInfo = complexTypeEnum.nextElement(); <--
> >
> >(how do you do that?... I mean what is "complexTypeEnum?"...)
> >
> >In contrast, I get a pointer to the ComplexTypeInfo object like the way
> >you indicated in one of your posts:
> >
> >// xmlnode is a DOMNode*...
> >DOMPSVITypeInfo* psviType =
>
>(DOMPSVITypeInfo*)xmlnode->getInterface(XMLUni::fgXercescInterfacePSVITypeI
>n
> >fo);
> >     if (!psviType)
> >         return false;
> >     const XMLCh* typeName =
> >psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name);
> >     if (!typeName)
> >         return false;
> >     const XMLCh* typeURI =
>
>psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace
>)
> >;
> >
> >     XSTypeDefinition::TYPE_CATEGORY typeType =
> >
>
>(XSTypeDefinition::TYPE_CATEGORY)psviType->getNumericProperty(DOMPSVITypeIn
>f
> >o::PSVI_Type_Definition_Type);
> >
> >     Grammar* pGrammar=FDOMParser->getGrammar(typeURI);
> >     if(!pGrammar &&
>pGrammar->getGrammarType()!=Grammar::SchemaGrammarType)
> >         return false;
> >
> >     SchemaGrammar* pSchema=(SchemaGrammar*)pGrammar;
> >     if(typeType!=XSTypeDefinition::COMPLEX_TYPE)
> >         return true;
> >
> >     XMLBuffer typeKey(1023);
> >     typeKey.set(typeURI);
> >     typeKey.append(chComma);
> >     typeKey.append(typeName);
> >     RefHashTableOf<ComplexTypeInfo>* pSchemaTypes =
> >pSchema->getComplexTypeRegistry();
> >     ComplexTypeInfo* pComplexType =
> >pSchemaTypes->get(typeKey.getRawBuffer());
> >
> >
> >Thanks again, you help is being priceless!
> >
> >Nicolas
> >
> >
> >-----Original Message-----
> >From: Alberto Massari [mailto:amassari@datadirect.com]
> >Sent: Thursday, March 02, 2006 12:00 PM
> >To: Nicolas Tsokas
> >Cc: c-dev@xerces.apache.org
> >Subject: RE: Attribute namespace info through PSVI. Please help...!
> >
> >At 11:45 AM 3/2/2006 +0200, Nicolas Tsokas wrote:
> > >Hi Alberto,
> > >
> > >Method getAttName() is not implemented in base class XMLAttDef. It's
only
> > >implemented in class SchemaAttDef.
> >
> >You're right, I read my code too quickly.... This is what I do:
> >
> >ComplexTypeInfo& curTypeInfo = complexTypeEnum.nextElement();
> >if(curTypeInfo.hasAttDefs())
> >{
> >    XMLAttDefList& attrIter=curTypeInfo.getAttDefList();
> >    for(unsigned int i=0;i<attrIter.getAttDefCount();i++)
> >    {
> >      XMLAttDef& attr=attrIter.getAttDef(i);
> >      XMLAttDef::DefAttTypes ty = attr.getDefaultType();
> >      if(ty == XMLAttDef::Prohibited)
> >        continue;
> >      SchemaAttDef* pAttr=(SchemaAttDef*)&attr;
> >      if(pAttr->getAttName()->getURI()==qname.getURI())
> >        szName=pAttr->getFullName();
> >      else
> >        szName=getFullName(pAttr->getAttName());
> >    }
> >}
> >
> >and this code has never failed.
> >If this doesn't help you, can you send the entire testcase you are
> >using (C++ files and schema)?
> >
> >Thanks,
> >Alberto
> >
> >
> > >Is there any way of extracting namespace/prefix information from
>XMLAttDef?
> > >
> > >Many thanks for replying to me...
> > >
> > >Nicolas
> > >
> > >
> > >-----Original Message-----
> > >From: Alberto Massari [mailto:amassari@datadirect.com]
> > >Sent: Thursday, March 02, 2006 11:08 AM
> > >To: c-dev@xerces.apache.org
> > >Subject: RE: Attribute namespace info through PSVI. Please help...!
> > >
> > >Hi Nicolas,
> > >
> > >At 02:50 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> > > >Hi Alberto...
> > > >
> > > >Thanks indeed for your answer...
> > > >
> > > >Yes, I've tried getAttName()... And it always gives me a pointer to
> > > >an invalid QName object. I mean qname->getPrefix(),
> >qname->getLocalPart(),
> > > >etc. they all cause an exception...
> > >
> > >That's strange, as I have used it successfully.
> > >
> > >
> > > >Here's my code: (the previous part of the code is the one you posted
> > > >on xerces-c mail archives on 02 Feb 2005)...
> > > >
> > > >ComplexTypeInfo* pComplexType =
> >pSchemaTypes->get(typeKey.getRawBuffer());
> > > >if (!pComplexType->hasAttDefs())
> > > >         return;
> > > >
> > > >SchemaAttDefList& attDefList =
> > > >         (SchemaAttDefList&)pComplexType->getAttDefList();
> > > >unsigned int attCount = attDefList.getAttDefCount();
> > > >for (unsigned int i=0; i<attCount; i++)
> > > >{
> > > >         SchemaAttDef& attDef =
(SchemaAttDef&)attDefList.getAttDef(i);
> > > >         attributes->add(attDef.getFullName());
> > > >         const QName* qnm = attDef.getAttName();
> > > >         const XMLCh* aaa = qnm->getPrefix();
> > > >}
> > >
> > >Just to double check; can you remove the casts and work directly off
> > >the virtual table (this is the code I have been using in my app)? Like
> >this:
> > >
> > >XMLAttDefList& attDefList = pComplexType->getAttDefList();
> > >unsigned int attCount = attDefList.getAttDefCount();
> > >for (unsigned int i=0; i<attCount; i++)
> > >{
> > >          XMLAttDef& attDef = attDefList.getAttDef(i);
> > >          attributes->add(attDef.getFullName());
> > >          const QName* qnm = attDef.getAttName();
> > >          const XMLCh* aaa = qnm->getPrefix();
> > >}
> > >
> > >Hope this helps,
> > >Alberto
> > >
> > > >Thanks again Alberto... I really appreciate your help.
> > > >
> > > >Nicolas
> > > >
> > > >
> > > >
> > > >
> > > >-----Original Message-----
> > > >From: Alberto Massari [mailto:amassari@datadirect.com]
> > > >Sent: Wednesday, March 01, 2006 2:32 PM
> > > >To: c-dev@xerces.apache.org
> > > >Subject: Re: Attribute namespace info through PSVI. Please help...!
> > > >
> > > >Hi Nicolas,
> > > >
> > > >At 02:00 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> > > > >Hi everyone,
> > > > >
> > > > >I'm trying to obtain info about an element using
> > > > >PSVI (trying to resolve allowed children and attributes
> > > > >for that specific element).
> > > > >
> > > > >I obtain a pointer to the corresponding
> > > > >ComplexTypeInfo object which describes the element. Then I
> > > > >get the names and namespaces of the allowed
> > > > >children for that element by using ComplextTypeInfo's
> > > > >elementAt(index) method and by obtaining
> > > > >pointers to SchemaElementDecl objects.
> > > > >
> > > > >I have a problem with the attributes, though:
> > > > >I get the list of attributes through
> > > > >getAttDefList() method of the ComplexTypeInfo object.
> > > > >Then I obtain a SchemaAttDef for each attribute.
> > > > >SchemaAttDef gives the attribute's name
> > > > >through its method getFullName(), but I cannot
> > > > >figure out any way of finding their namespaces
> > > > >(or namespace prefixes). Am I missing something?...
> > > >
> > > >Have you tried with SchemaAttDef::getAttName()?
> > > >The QName* it returns should give you prefix, local name and
namespace
> >URI.
> > > >
> > > >Alberto
> > > >
> > > > >
> > > > >Can anybody please help me?
> > > > >
> > > > >Thank you so much in advance.
> > > > >
> > > > >Nicolas
> > > >
> > > >
> > > >---------------------------------------------------------------------
> > > >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> > > >For additional commands, e-mail: c-dev-help@xerces.apache.org
> > > >
> > > >
> > > >
> > > >---------------------------------------------------------------------
> > > >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> > > >For additional commands, e-mail: c-dev-help@xerces.apache.org
> > >
> > >
> > >---------------------------------------------------------------------
> > >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> > >For additional commands, e-mail: c-dev-help@xerces.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org


RE: Attribute namespace info through PSVI. Please help...!

Posted by Alberto Massari <am...@datadirect.com>.
Hi Nicolas,
I finally tracked down the issue; I placed a breakpoint inside the 
SchemaAttDef constructor and used the Object Inspector to see its 
values (and they were good), then I did the same on the pointer 
returned by getAttDef(). So I noticed that the values were shifted, 
and the fAttName was now assigned to 0xFFFFFFE (i.e. -2, or 
XMLElementDecl::fgInvalidElemId) that was previously the value of the 
fElemId field.
The reason for this different memory layout was that the Xerces 
project specifies the option "Treat enum types as ints", while the 
project that BC6 creates by default doesn't specify it. Enabling this 
option for your testcase fixed the problem.

Hope this helps,
Alberto

At 08:09 AM 3/3/2006 +0200, Nicolas Tsokas wrote:
>Hi Alberto,
>
>I have noticed those bogus addresses as well... It is a bit as if those
>objects are not valid any more...
>
>I noticed the following comment in file SchemaAttDef.hpp:
>
>// ----------------------------------------------------------------------
>// Partial implementation of PSVI
>// The values these methods return are only accurate until the DOMAttr
>// is created that uses the values. After this a clean up method is called
>// and the SchemaAttDef may be used again.
>// note that some of this information has dependancies. For example,
>// if something is not valid then the information returned by the other
>// calls may be meaningless
>// See http://www.w3.org/TR/xmlschema-1/ for detailed information
>// ----------------------------------------------------------------------
>
>To tell the truth I didn't understand the exact meaning. But maybe it has
>something to do with those invalidated objects... (?) I was wondering if
>that class SchemaAttDef (or XMLAttDef too) should only be used DURING
>parsing... ? And not AFTER parsing like I'm doing... Is that possible?
>
>Thank you so much Alberto for everything.
>
>Nicolas
>
>
>-----Original Message-----
>From: Alberto Massari [mailto:amassari@datadirect.com]
>Sent: Thursday, March 02, 2006 7:09 PM
>To: Nicolas Tsokas
>Cc: c-dev@xerces.apache.org
>Subject: RE: Attribute namespace info through PSVI. Please help...!
>
>Hi Nicolas,
>thanks for sending the code; I tried with my usual setup (Visual C++
>6.0) and it worked just fine. So I tried with Borland C++ 6, and I
>see that the attribute name (and other members of the attribute
>definition) are set to bogus addresses like 0xFFFFFFE. I am
>investigating how this could happen, but I am not very confortable
>debugging from inside BC6...
>
>Alberto
>
>At 12:44 PM 3/2/2006 +0200, Nicolas Tsokas wrote:
> >Alberto,
> >
> >I used the code you just gave to me. I'm trying to get a pointer to a QName
> >object, but it seems that that object is invalid.
> >I get the pointer to QName, but then no matter which method of QName I call
> >I get an exception (Access in invalid memory).
> >
> >XMLAttDefList& attrIter=pComplexType->getAttDefList();
> >for(unsigned int i=0;i<attrIter.getAttDefCount();i++)
> >{
> >     XMLAttDef& attr=attrIter.getAttDef(i);
> >     XMLAttDef::DefAttTypes ty = attr.getDefaultType();
> >     if(ty == XMLAttDef::Prohibited)
> >             continue;
> >     SchemaAttDef* pAttr=(SchemaAttDef*)&attr;
> >     QName* qname = pAttr->getAttName();
> >     unsigned int uriid = qname->getURI(); --> I always get an exception
>here
> >         // qname object is invalid
> >}
> >
> >I noticed that you get the ComplexTypeInfo by reference and not a pointer
> >
> >--> ComplexTypeInfo& curTypeInfo = complexTypeEnum.nextElement(); <--
> >
> >(how do you do that?... I mean what is "complexTypeEnum?"...)
> >
> >In contrast, I get a pointer to the ComplexTypeInfo object like the way
> >you indicated in one of your posts:
> >
> >// xmlnode is a DOMNode*...
> >DOMPSVITypeInfo* psviType =
> >(DOMPSVITypeInfo*)xmlnode->getInterface(XMLUni::fgXercescInterfacePSVITypeI
>n
> >fo);
> >     if (!psviType)
> >         return false;
> >     const XMLCh* typeName =
> >psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name);
> >     if (!typeName)
> >         return false;
> >     const XMLCh* typeURI =
> >psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace
>)
> >;
> >
> >     XSTypeDefinition::TYPE_CATEGORY typeType =
> >
> >(XSTypeDefinition::TYPE_CATEGORY)psviType->getNumericProperty(DOMPSVITypeIn
>f
> >o::PSVI_Type_Definition_Type);
> >
> >     Grammar* pGrammar=FDOMParser->getGrammar(typeURI);
> >     if(!pGrammar &&
>pGrammar->getGrammarType()!=Grammar::SchemaGrammarType)
> >         return false;
> >
> >     SchemaGrammar* pSchema=(SchemaGrammar*)pGrammar;
> >     if(typeType!=XSTypeDefinition::COMPLEX_TYPE)
> >         return true;
> >
> >     XMLBuffer typeKey(1023);
> >     typeKey.set(typeURI);
> >     typeKey.append(chComma);
> >     typeKey.append(typeName);
> >     RefHashTableOf<ComplexTypeInfo>* pSchemaTypes =
> >pSchema->getComplexTypeRegistry();
> >     ComplexTypeInfo* pComplexType =
> >pSchemaTypes->get(typeKey.getRawBuffer());
> >
> >
> >Thanks again, you help is being priceless!
> >
> >Nicolas
> >
> >
> >-----Original Message-----
> >From: Alberto Massari [mailto:amassari@datadirect.com]
> >Sent: Thursday, March 02, 2006 12:00 PM
> >To: Nicolas Tsokas
> >Cc: c-dev@xerces.apache.org
> >Subject: RE: Attribute namespace info through PSVI. Please help...!
> >
> >At 11:45 AM 3/2/2006 +0200, Nicolas Tsokas wrote:
> > >Hi Alberto,
> > >
> > >Method getAttName() is not implemented in base class XMLAttDef. It's only
> > >implemented in class SchemaAttDef.
> >
> >You're right, I read my code too quickly.... This is what I do:
> >
> >ComplexTypeInfo& curTypeInfo = complexTypeEnum.nextElement();
> >if(curTypeInfo.hasAttDefs())
> >{
> >    XMLAttDefList& attrIter=curTypeInfo.getAttDefList();
> >    for(unsigned int i=0;i<attrIter.getAttDefCount();i++)
> >    {
> >      XMLAttDef& attr=attrIter.getAttDef(i);
> >      XMLAttDef::DefAttTypes ty = attr.getDefaultType();
> >      if(ty == XMLAttDef::Prohibited)
> >        continue;
> >      SchemaAttDef* pAttr=(SchemaAttDef*)&attr;
> >      if(pAttr->getAttName()->getURI()==qname.getURI())
> >        szName=pAttr->getFullName();
> >      else
> >        szName=getFullName(pAttr->getAttName());
> >    }
> >}
> >
> >and this code has never failed.
> >If this doesn't help you, can you send the entire testcase you are
> >using (C++ files and schema)?
> >
> >Thanks,
> >Alberto
> >
> >
> > >Is there any way of extracting namespace/prefix information from
>XMLAttDef?
> > >
> > >Many thanks for replying to me...
> > >
> > >Nicolas
> > >
> > >
> > >-----Original Message-----
> > >From: Alberto Massari [mailto:amassari@datadirect.com]
> > >Sent: Thursday, March 02, 2006 11:08 AM
> > >To: c-dev@xerces.apache.org
> > >Subject: RE: Attribute namespace info through PSVI. Please help...!
> > >
> > >Hi Nicolas,
> > >
> > >At 02:50 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> > > >Hi Alberto...
> > > >
> > > >Thanks indeed for your answer...
> > > >
> > > >Yes, I've tried getAttName()... And it always gives me a pointer to
> > > >an invalid QName object. I mean qname->getPrefix(),
> >qname->getLocalPart(),
> > > >etc. they all cause an exception...
> > >
> > >That's strange, as I have used it successfully.
> > >
> > >
> > > >Here's my code: (the previous part of the code is the one you posted
> > > >on xerces-c mail archives on 02 Feb 2005)...
> > > >
> > > >ComplexTypeInfo* pComplexType =
> >pSchemaTypes->get(typeKey.getRawBuffer());
> > > >if (!pComplexType->hasAttDefs())
> > > >         return;
> > > >
> > > >SchemaAttDefList& attDefList =
> > > >         (SchemaAttDefList&)pComplexType->getAttDefList();
> > > >unsigned int attCount = attDefList.getAttDefCount();
> > > >for (unsigned int i=0; i<attCount; i++)
> > > >{
> > > >         SchemaAttDef& attDef = (SchemaAttDef&)attDefList.getAttDef(i);
> > > >         attributes->add(attDef.getFullName());
> > > >         const QName* qnm = attDef.getAttName();
> > > >         const XMLCh* aaa = qnm->getPrefix();
> > > >}
> > >
> > >Just to double check; can you remove the casts and work directly off
> > >the virtual table (this is the code I have been using in my app)? Like
> >this:
> > >
> > >XMLAttDefList& attDefList = pComplexType->getAttDefList();
> > >unsigned int attCount = attDefList.getAttDefCount();
> > >for (unsigned int i=0; i<attCount; i++)
> > >{
> > >          XMLAttDef& attDef = attDefList.getAttDef(i);
> > >          attributes->add(attDef.getFullName());
> > >          const QName* qnm = attDef.getAttName();
> > >          const XMLCh* aaa = qnm->getPrefix();
> > >}
> > >
> > >Hope this helps,
> > >Alberto
> > >
> > > >Thanks again Alberto... I really appreciate your help.
> > > >
> > > >Nicolas
> > > >
> > > >
> > > >
> > > >
> > > >-----Original Message-----
> > > >From: Alberto Massari [mailto:amassari@datadirect.com]
> > > >Sent: Wednesday, March 01, 2006 2:32 PM
> > > >To: c-dev@xerces.apache.org
> > > >Subject: Re: Attribute namespace info through PSVI. Please help...!
> > > >
> > > >Hi Nicolas,
> > > >
> > > >At 02:00 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> > > > >Hi everyone,
> > > > >
> > > > >I'm trying to obtain info about an element using
> > > > >PSVI (trying to resolve allowed children and attributes
> > > > >for that specific element).
> > > > >
> > > > >I obtain a pointer to the corresponding
> > > > >ComplexTypeInfo object which describes the element. Then I
> > > > >get the names and namespaces of the allowed
> > > > >children for that element by using ComplextTypeInfo's
> > > > >elementAt(index) method and by obtaining
> > > > >pointers to SchemaElementDecl objects.
> > > > >
> > > > >I have a problem with the attributes, though:
> > > > >I get the list of attributes through
> > > > >getAttDefList() method of the ComplexTypeInfo object.
> > > > >Then I obtain a SchemaAttDef for each attribute.
> > > > >SchemaAttDef gives the attribute's name
> > > > >through its method getFullName(), but I cannot
> > > > >figure out any way of finding their namespaces
> > > > >(or namespace prefixes). Am I missing something?...
> > > >
> > > >Have you tried with SchemaAttDef::getAttName()?
> > > >The QName* it returns should give you prefix, local name and namespace
> >URI.
> > > >
> > > >Alberto
> > > >
> > > > >
> > > > >Can anybody please help me?
> > > > >
> > > > >Thank you so much in advance.
> > > > >
> > > > >Nicolas
> > > >
> > > >
> > > >---------------------------------------------------------------------
> > > >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> > > >For additional commands, e-mail: c-dev-help@xerces.apache.org
> > > >
> > > >
> > > >
> > > >---------------------------------------------------------------------
> > > >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> > > >For additional commands, e-mail: c-dev-help@xerces.apache.org
> > >
> > >
> > >---------------------------------------------------------------------
> > >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> > >For additional commands, e-mail: c-dev-help@xerces.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org


RE: Attribute namespace info through PSVI. Please help...!

Posted by Nicolas Tsokas <ts...@ekt.gr>.
Hi Alberto,

I have noticed those bogus addresses as well... It is a bit as if those 
objects are not valid any more...  

I noticed the following comment in file SchemaAttDef.hpp:

// ----------------------------------------------------------------------
// Partial implementation of PSVI
// The values these methods return are only accurate until the DOMAttr
// is created that uses the values. After this a clean up method is called
// and the SchemaAttDef may be used again.
// note that some of this information has dependancies. For example,
// if something is not valid then the information returned by the other 
// calls may be meaningless
// See http://www.w3.org/TR/xmlschema-1/ for detailed information
// ----------------------------------------------------------------------

To tell the truth I didn't understand the exact meaning. But maybe it has
something to do with those invalidated objects... (?) I was wondering if
that class SchemaAttDef (or XMLAttDef too) should only be used DURING 
parsing... ? And not AFTER parsing like I'm doing... Is that possible?

Thank you so much Alberto for everything.

Nicolas


-----Original Message-----
From: Alberto Massari [mailto:amassari@datadirect.com] 
Sent: Thursday, March 02, 2006 7:09 PM
To: Nicolas Tsokas
Cc: c-dev@xerces.apache.org
Subject: RE: Attribute namespace info through PSVI. Please help...!

Hi Nicolas,
thanks for sending the code; I tried with my usual setup (Visual C++ 
6.0) and it worked just fine. So I tried with Borland C++ 6, and I 
see that the attribute name (and other members of the attribute 
definition) are set to bogus addresses like 0xFFFFFFE. I am 
investigating how this could happen, but I am not very confortable 
debugging from inside BC6...

Alberto

At 12:44 PM 3/2/2006 +0200, Nicolas Tsokas wrote:
>Alberto,
>
>I used the code you just gave to me. I'm trying to get a pointer to a QName
>object, but it seems that that object is invalid.
>I get the pointer to QName, but then no matter which method of QName I call
>I get an exception (Access in invalid memory).
>
>XMLAttDefList& attrIter=pComplexType->getAttDefList();
>for(unsigned int i=0;i<attrIter.getAttDefCount();i++)
>{
>     XMLAttDef& attr=attrIter.getAttDef(i);
>     XMLAttDef::DefAttTypes ty = attr.getDefaultType();
>     if(ty == XMLAttDef::Prohibited)
>             continue;
>     SchemaAttDef* pAttr=(SchemaAttDef*)&attr;
>     QName* qname = pAttr->getAttName();
>     unsigned int uriid = qname->getURI(); --> I always get an exception
here
>         // qname object is invalid
>}
>
>I noticed that you get the ComplexTypeInfo by reference and not a pointer
>
>--> ComplexTypeInfo& curTypeInfo = complexTypeEnum.nextElement(); <--
>
>(how do you do that?... I mean what is "complexTypeEnum?"...)
>
>In contrast, I get a pointer to the ComplexTypeInfo object like the way
>you indicated in one of your posts:
>
>// xmlnode is a DOMNode*...
>DOMPSVITypeInfo* psviType =
>(DOMPSVITypeInfo*)xmlnode->getInterface(XMLUni::fgXercescInterfacePSVITypeI
n
>fo);
>     if (!psviType)
>         return false;
>     const XMLCh* typeName =
>psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name);
>     if (!typeName)
>         return false;
>     const XMLCh* typeURI =
>psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace
)
>;
>
>     XSTypeDefinition::TYPE_CATEGORY typeType =
>
>(XSTypeDefinition::TYPE_CATEGORY)psviType->getNumericProperty(DOMPSVITypeIn
f
>o::PSVI_Type_Definition_Type);
>
>     Grammar* pGrammar=FDOMParser->getGrammar(typeURI);
>     if(!pGrammar &&
pGrammar->getGrammarType()!=Grammar::SchemaGrammarType)
>         return false;
>
>     SchemaGrammar* pSchema=(SchemaGrammar*)pGrammar;
>     if(typeType!=XSTypeDefinition::COMPLEX_TYPE)
>         return true;
>
>     XMLBuffer typeKey(1023);
>     typeKey.set(typeURI);
>     typeKey.append(chComma);
>     typeKey.append(typeName);
>     RefHashTableOf<ComplexTypeInfo>* pSchemaTypes =
>pSchema->getComplexTypeRegistry();
>     ComplexTypeInfo* pComplexType =
>pSchemaTypes->get(typeKey.getRawBuffer());
>
>
>Thanks again, you help is being priceless!
>
>Nicolas
>
>
>-----Original Message-----
>From: Alberto Massari [mailto:amassari@datadirect.com]
>Sent: Thursday, March 02, 2006 12:00 PM
>To: Nicolas Tsokas
>Cc: c-dev@xerces.apache.org
>Subject: RE: Attribute namespace info through PSVI. Please help...!
>
>At 11:45 AM 3/2/2006 +0200, Nicolas Tsokas wrote:
> >Hi Alberto,
> >
> >Method getAttName() is not implemented in base class XMLAttDef. It's only
> >implemented in class SchemaAttDef.
>
>You're right, I read my code too quickly.... This is what I do:
>
>ComplexTypeInfo& curTypeInfo = complexTypeEnum.nextElement();
>if(curTypeInfo.hasAttDefs())
>{
>    XMLAttDefList& attrIter=curTypeInfo.getAttDefList();
>    for(unsigned int i=0;i<attrIter.getAttDefCount();i++)
>    {
>      XMLAttDef& attr=attrIter.getAttDef(i);
>      XMLAttDef::DefAttTypes ty = attr.getDefaultType();
>      if(ty == XMLAttDef::Prohibited)
>        continue;
>      SchemaAttDef* pAttr=(SchemaAttDef*)&attr;
>      if(pAttr->getAttName()->getURI()==qname.getURI())
>        szName=pAttr->getFullName();
>      else
>        szName=getFullName(pAttr->getAttName());
>    }
>}
>
>and this code has never failed.
>If this doesn't help you, can you send the entire testcase you are
>using (C++ files and schema)?
>
>Thanks,
>Alberto
>
>
> >Is there any way of extracting namespace/prefix information from
XMLAttDef?
> >
> >Many thanks for replying to me...
> >
> >Nicolas
> >
> >
> >-----Original Message-----
> >From: Alberto Massari [mailto:amassari@datadirect.com]
> >Sent: Thursday, March 02, 2006 11:08 AM
> >To: c-dev@xerces.apache.org
> >Subject: RE: Attribute namespace info through PSVI. Please help...!
> >
> >Hi Nicolas,
> >
> >At 02:50 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> > >Hi Alberto...
> > >
> > >Thanks indeed for your answer...
> > >
> > >Yes, I've tried getAttName()... And it always gives me a pointer to
> > >an invalid QName object. I mean qname->getPrefix(),
>qname->getLocalPart(),
> > >etc. they all cause an exception...
> >
> >That's strange, as I have used it successfully.
> >
> >
> > >Here's my code: (the previous part of the code is the one you posted
> > >on xerces-c mail archives on 02 Feb 2005)...
> > >
> > >ComplexTypeInfo* pComplexType =
>pSchemaTypes->get(typeKey.getRawBuffer());
> > >if (!pComplexType->hasAttDefs())
> > >         return;
> > >
> > >SchemaAttDefList& attDefList =
> > >         (SchemaAttDefList&)pComplexType->getAttDefList();
> > >unsigned int attCount = attDefList.getAttDefCount();
> > >for (unsigned int i=0; i<attCount; i++)
> > >{
> > >         SchemaAttDef& attDef = (SchemaAttDef&)attDefList.getAttDef(i);
> > >         attributes->add(attDef.getFullName());
> > >         const QName* qnm = attDef.getAttName();
> > >         const XMLCh* aaa = qnm->getPrefix();
> > >}
> >
> >Just to double check; can you remove the casts and work directly off
> >the virtual table (this is the code I have been using in my app)? Like
>this:
> >
> >XMLAttDefList& attDefList = pComplexType->getAttDefList();
> >unsigned int attCount = attDefList.getAttDefCount();
> >for (unsigned int i=0; i<attCount; i++)
> >{
> >          XMLAttDef& attDef = attDefList.getAttDef(i);
> >          attributes->add(attDef.getFullName());
> >          const QName* qnm = attDef.getAttName();
> >          const XMLCh* aaa = qnm->getPrefix();
> >}
> >
> >Hope this helps,
> >Alberto
> >
> > >Thanks again Alberto... I really appreciate your help.
> > >
> > >Nicolas
> > >
> > >
> > >
> > >
> > >-----Original Message-----
> > >From: Alberto Massari [mailto:amassari@datadirect.com]
> > >Sent: Wednesday, March 01, 2006 2:32 PM
> > >To: c-dev@xerces.apache.org
> > >Subject: Re: Attribute namespace info through PSVI. Please help...!
> > >
> > >Hi Nicolas,
> > >
> > >At 02:00 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> > > >Hi everyone,
> > > >
> > > >I'm trying to obtain info about an element using
> > > >PSVI (trying to resolve allowed children and attributes
> > > >for that specific element).
> > > >
> > > >I obtain a pointer to the corresponding
> > > >ComplexTypeInfo object which describes the element. Then I
> > > >get the names and namespaces of the allowed
> > > >children for that element by using ComplextTypeInfo's
> > > >elementAt(index) method and by obtaining
> > > >pointers to SchemaElementDecl objects.
> > > >
> > > >I have a problem with the attributes, though:
> > > >I get the list of attributes through
> > > >getAttDefList() method of the ComplexTypeInfo object.
> > > >Then I obtain a SchemaAttDef for each attribute.
> > > >SchemaAttDef gives the attribute's name
> > > >through its method getFullName(), but I cannot
> > > >figure out any way of finding their namespaces
> > > >(or namespace prefixes). Am I missing something?...
> > >
> > >Have you tried with SchemaAttDef::getAttName()?
> > >The QName* it returns should give you prefix, local name and namespace
>URI.
> > >
> > >Alberto
> > >
> > > >
> > > >Can anybody please help me?
> > > >
> > > >Thank you so much in advance.
> > > >
> > > >Nicolas
> > >
> > >
> > >---------------------------------------------------------------------
> > >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> > >For additional commands, e-mail: c-dev-help@xerces.apache.org
> > >
> > >
> > >
> > >---------------------------------------------------------------------
> > >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> > >For additional commands, e-mail: c-dev-help@xerces.apache.org
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> >For additional commands, e-mail: c-dev-help@xerces.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org


RE: Attribute namespace info through PSVI. Please help...!

Posted by Alberto Massari <am...@datadirect.com>.
Hi Nicolas,
thanks for sending the code; I tried with my usual setup (Visual C++ 
6.0) and it worked just fine. So I tried with Borland C++ 6, and I 
see that the attribute name (and other members of the attribute 
definition) are set to bogus addresses like 0xFFFFFFE. I am 
investigating how this could happen, but I am not very confortable 
debugging from inside BC6...

Alberto

At 12:44 PM 3/2/2006 +0200, Nicolas Tsokas wrote:
>Alberto,
>
>I used the code you just gave to me. I'm trying to get a pointer to a QName
>object, but it seems that that object is invalid.
>I get the pointer to QName, but then no matter which method of QName I call
>I get an exception (Access in invalid memory).
>
>XMLAttDefList& attrIter=pComplexType->getAttDefList();
>for(unsigned int i=0;i<attrIter.getAttDefCount();i++)
>{
>     XMLAttDef& attr=attrIter.getAttDef(i);
>     XMLAttDef::DefAttTypes ty = attr.getDefaultType();
>     if(ty == XMLAttDef::Prohibited)
>             continue;
>     SchemaAttDef* pAttr=(SchemaAttDef*)&attr;
>     QName* qname = pAttr->getAttName();
>     unsigned int uriid = qname->getURI(); --> I always get an exception here
>         // qname object is invalid
>}
>
>I noticed that you get the ComplexTypeInfo by reference and not a pointer
>
>--> ComplexTypeInfo& curTypeInfo = complexTypeEnum.nextElement(); <--
>
>(how do you do that?... I mean what is "complexTypeEnum?"...)
>
>In contrast, I get a pointer to the ComplexTypeInfo object like the way
>you indicated in one of your posts:
>
>// xmlnode is a DOMNode*...
>DOMPSVITypeInfo* psviType =
>(DOMPSVITypeInfo*)xmlnode->getInterface(XMLUni::fgXercescInterfacePSVITypeIn
>fo);
>     if (!psviType)
>         return false;
>     const XMLCh* typeName =
>psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name);
>     if (!typeName)
>         return false;
>     const XMLCh* typeURI =
>psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace)
>;
>
>     XSTypeDefinition::TYPE_CATEGORY typeType =
>
>(XSTypeDefinition::TYPE_CATEGORY)psviType->getNumericProperty(DOMPSVITypeInf
>o::PSVI_Type_Definition_Type);
>
>     Grammar* pGrammar=FDOMParser->getGrammar(typeURI);
>     if(!pGrammar && pGrammar->getGrammarType()!=Grammar::SchemaGrammarType)
>         return false;
>
>     SchemaGrammar* pSchema=(SchemaGrammar*)pGrammar;
>     if(typeType!=XSTypeDefinition::COMPLEX_TYPE)
>         return true;
>
>     XMLBuffer typeKey(1023);
>     typeKey.set(typeURI);
>     typeKey.append(chComma);
>     typeKey.append(typeName);
>     RefHashTableOf<ComplexTypeInfo>* pSchemaTypes =
>pSchema->getComplexTypeRegistry();
>     ComplexTypeInfo* pComplexType =
>pSchemaTypes->get(typeKey.getRawBuffer());
>
>
>Thanks again, you help is being priceless!
>
>Nicolas
>
>
>-----Original Message-----
>From: Alberto Massari [mailto:amassari@datadirect.com]
>Sent: Thursday, March 02, 2006 12:00 PM
>To: Nicolas Tsokas
>Cc: c-dev@xerces.apache.org
>Subject: RE: Attribute namespace info through PSVI. Please help...!
>
>At 11:45 AM 3/2/2006 +0200, Nicolas Tsokas wrote:
> >Hi Alberto,
> >
> >Method getAttName() is not implemented in base class XMLAttDef. It's only
> >implemented in class SchemaAttDef.
>
>You're right, I read my code too quickly.... This is what I do:
>
>ComplexTypeInfo& curTypeInfo = complexTypeEnum.nextElement();
>if(curTypeInfo.hasAttDefs())
>{
>    XMLAttDefList& attrIter=curTypeInfo.getAttDefList();
>    for(unsigned int i=0;i<attrIter.getAttDefCount();i++)
>    {
>      XMLAttDef& attr=attrIter.getAttDef(i);
>      XMLAttDef::DefAttTypes ty = attr.getDefaultType();
>      if(ty == XMLAttDef::Prohibited)
>        continue;
>      SchemaAttDef* pAttr=(SchemaAttDef*)&attr;
>      if(pAttr->getAttName()->getURI()==qname.getURI())
>        szName=pAttr->getFullName();
>      else
>        szName=getFullName(pAttr->getAttName());
>    }
>}
>
>and this code has never failed.
>If this doesn't help you, can you send the entire testcase you are
>using (C++ files and schema)?
>
>Thanks,
>Alberto
>
>
> >Is there any way of extracting namespace/prefix information from XMLAttDef?
> >
> >Many thanks for replying to me...
> >
> >Nicolas
> >
> >
> >-----Original Message-----
> >From: Alberto Massari [mailto:amassari@datadirect.com]
> >Sent: Thursday, March 02, 2006 11:08 AM
> >To: c-dev@xerces.apache.org
> >Subject: RE: Attribute namespace info through PSVI. Please help...!
> >
> >Hi Nicolas,
> >
> >At 02:50 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> > >Hi Alberto...
> > >
> > >Thanks indeed for your answer...
> > >
> > >Yes, I've tried getAttName()... And it always gives me a pointer to
> > >an invalid QName object. I mean qname->getPrefix(),
>qname->getLocalPart(),
> > >etc. they all cause an exception...
> >
> >That's strange, as I have used it successfully.
> >
> >
> > >Here's my code: (the previous part of the code is the one you posted
> > >on xerces-c mail archives on 02 Feb 2005)...
> > >
> > >ComplexTypeInfo* pComplexType =
>pSchemaTypes->get(typeKey.getRawBuffer());
> > >if (!pComplexType->hasAttDefs())
> > >         return;
> > >
> > >SchemaAttDefList& attDefList =
> > >         (SchemaAttDefList&)pComplexType->getAttDefList();
> > >unsigned int attCount = attDefList.getAttDefCount();
> > >for (unsigned int i=0; i<attCount; i++)
> > >{
> > >         SchemaAttDef& attDef = (SchemaAttDef&)attDefList.getAttDef(i);
> > >         attributes->add(attDef.getFullName());
> > >         const QName* qnm = attDef.getAttName();
> > >         const XMLCh* aaa = qnm->getPrefix();
> > >}
> >
> >Just to double check; can you remove the casts and work directly off
> >the virtual table (this is the code I have been using in my app)? Like
>this:
> >
> >XMLAttDefList& attDefList = pComplexType->getAttDefList();
> >unsigned int attCount = attDefList.getAttDefCount();
> >for (unsigned int i=0; i<attCount; i++)
> >{
> >          XMLAttDef& attDef = attDefList.getAttDef(i);
> >          attributes->add(attDef.getFullName());
> >          const QName* qnm = attDef.getAttName();
> >          const XMLCh* aaa = qnm->getPrefix();
> >}
> >
> >Hope this helps,
> >Alberto
> >
> > >Thanks again Alberto... I really appreciate your help.
> > >
> > >Nicolas
> > >
> > >
> > >
> > >
> > >-----Original Message-----
> > >From: Alberto Massari [mailto:amassari@datadirect.com]
> > >Sent: Wednesday, March 01, 2006 2:32 PM
> > >To: c-dev@xerces.apache.org
> > >Subject: Re: Attribute namespace info through PSVI. Please help...!
> > >
> > >Hi Nicolas,
> > >
> > >At 02:00 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> > > >Hi everyone,
> > > >
> > > >I'm trying to obtain info about an element using
> > > >PSVI (trying to resolve allowed children and attributes
> > > >for that specific element).
> > > >
> > > >I obtain a pointer to the corresponding
> > > >ComplexTypeInfo object which describes the element. Then I
> > > >get the names and namespaces of the allowed
> > > >children for that element by using ComplextTypeInfo's
> > > >elementAt(index) method and by obtaining
> > > >pointers to SchemaElementDecl objects.
> > > >
> > > >I have a problem with the attributes, though:
> > > >I get the list of attributes through
> > > >getAttDefList() method of the ComplexTypeInfo object.
> > > >Then I obtain a SchemaAttDef for each attribute.
> > > >SchemaAttDef gives the attribute's name
> > > >through its method getFullName(), but I cannot
> > > >figure out any way of finding their namespaces
> > > >(or namespace prefixes). Am I missing something?...
> > >
> > >Have you tried with SchemaAttDef::getAttName()?
> > >The QName* it returns should give you prefix, local name and namespace
>URI.
> > >
> > >Alberto
> > >
> > > >
> > > >Can anybody please help me?
> > > >
> > > >Thank you so much in advance.
> > > >
> > > >Nicolas
> > >
> > >
> > >---------------------------------------------------------------------
> > >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> > >For additional commands, e-mail: c-dev-help@xerces.apache.org
> > >
> > >
> > >
> > >---------------------------------------------------------------------
> > >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> > >For additional commands, e-mail: c-dev-help@xerces.apache.org
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> >For additional commands, e-mail: c-dev-help@xerces.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org


RE: Attribute namespace info through PSVI. Please help...!

Posted by Nicolas Tsokas <ts...@ekt.gr>.
Alberto,

I used the code you just gave to me. I'm trying to get a pointer to a QName
object, but it seems that that object is invalid.
I get the pointer to QName, but then no matter which method of QName I call
I get an exception (Access in invalid memory). 

XMLAttDefList& attrIter=pComplexType->getAttDefList();
for(unsigned int i=0;i<attrIter.getAttDefCount();i++)
{
    XMLAttDef& attr=attrIter.getAttDef(i);
    XMLAttDef::DefAttTypes ty = attr.getDefaultType();
    if(ty == XMLAttDef::Prohibited)
            continue;
    SchemaAttDef* pAttr=(SchemaAttDef*)&attr;
    QName* qname = pAttr->getAttName();
    unsigned int uriid = qname->getURI(); --> I always get an exception here
	// qname object is invalid
}

I noticed that you get the ComplexTypeInfo by reference and not a pointer 

--> ComplexTypeInfo& curTypeInfo = complexTypeEnum.nextElement(); <--

(how do you do that?... I mean what is "complexTypeEnum?"...)

In contrast, I get a pointer to the ComplexTypeInfo object like the way
you indicated in one of your posts:

// xmlnode is a DOMNode*...
DOMPSVITypeInfo* psviType =
(DOMPSVITypeInfo*)xmlnode->getInterface(XMLUni::fgXercescInterfacePSVITypeIn
fo);
    if (!psviType)
        return false;
    const XMLCh* typeName =
psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name);
    if (!typeName)
        return false;
    const XMLCh* typeURI =
psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace)
;

    XSTypeDefinition::TYPE_CATEGORY typeType =
 
(XSTypeDefinition::TYPE_CATEGORY)psviType->getNumericProperty(DOMPSVITypeInf
o::PSVI_Type_Definition_Type);

    Grammar* pGrammar=FDOMParser->getGrammar(typeURI);
    if(!pGrammar && pGrammar->getGrammarType()!=Grammar::SchemaGrammarType)
        return false;

    SchemaGrammar* pSchema=(SchemaGrammar*)pGrammar;
    if(typeType!=XSTypeDefinition::COMPLEX_TYPE)
        return true;

    XMLBuffer typeKey(1023);
    typeKey.set(typeURI);
    typeKey.append(chComma);
    typeKey.append(typeName);
    RefHashTableOf<ComplexTypeInfo>* pSchemaTypes =
pSchema->getComplexTypeRegistry();
    ComplexTypeInfo* pComplexType =
pSchemaTypes->get(typeKey.getRawBuffer());


Thanks again, you help is being priceless!

Nicolas


-----Original Message-----
From: Alberto Massari [mailto:amassari@datadirect.com] 
Sent: Thursday, March 02, 2006 12:00 PM
To: Nicolas Tsokas
Cc: c-dev@xerces.apache.org
Subject: RE: Attribute namespace info through PSVI. Please help...!

At 11:45 AM 3/2/2006 +0200, Nicolas Tsokas wrote:
>Hi Alberto,
>
>Method getAttName() is not implemented in base class XMLAttDef. It's only
>implemented in class SchemaAttDef.

You're right, I read my code too quickly.... This is what I do:

ComplexTypeInfo& curTypeInfo = complexTypeEnum.nextElement();
if(curTypeInfo.hasAttDefs())
{
   XMLAttDefList& attrIter=curTypeInfo.getAttDefList();
   for(unsigned int i=0;i<attrIter.getAttDefCount();i++)
   {
     XMLAttDef& attr=attrIter.getAttDef(i);
     XMLAttDef::DefAttTypes ty = attr.getDefaultType();
     if(ty == XMLAttDef::Prohibited)
       continue;
     SchemaAttDef* pAttr=(SchemaAttDef*)&attr;
     if(pAttr->getAttName()->getURI()==qname.getURI())
       szName=pAttr->getFullName();
     else
       szName=getFullName(pAttr->getAttName());
   }
}

and this code has never failed.
If this doesn't help you, can you send the entire testcase you are 
using (C++ files and schema)?

Thanks,
Alberto


>Is there any way of extracting namespace/prefix information from XMLAttDef?
>
>Many thanks for replying to me...
>
>Nicolas
>
>
>-----Original Message-----
>From: Alberto Massari [mailto:amassari@datadirect.com]
>Sent: Thursday, March 02, 2006 11:08 AM
>To: c-dev@xerces.apache.org
>Subject: RE: Attribute namespace info through PSVI. Please help...!
>
>Hi Nicolas,
>
>At 02:50 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> >Hi Alberto...
> >
> >Thanks indeed for your answer...
> >
> >Yes, I've tried getAttName()... And it always gives me a pointer to
> >an invalid QName object. I mean qname->getPrefix(),
qname->getLocalPart(),
> >etc. they all cause an exception...
>
>That's strange, as I have used it successfully.
>
>
> >Here's my code: (the previous part of the code is the one you posted
> >on xerces-c mail archives on 02 Feb 2005)...
> >
> >ComplexTypeInfo* pComplexType =
pSchemaTypes->get(typeKey.getRawBuffer());
> >if (!pComplexType->hasAttDefs())
> >         return;
> >
> >SchemaAttDefList& attDefList =
> >         (SchemaAttDefList&)pComplexType->getAttDefList();
> >unsigned int attCount = attDefList.getAttDefCount();
> >for (unsigned int i=0; i<attCount; i++)
> >{
> >         SchemaAttDef& attDef = (SchemaAttDef&)attDefList.getAttDef(i);
> >         attributes->add(attDef.getFullName());
> >         const QName* qnm = attDef.getAttName();
> >         const XMLCh* aaa = qnm->getPrefix();
> >}
>
>Just to double check; can you remove the casts and work directly off
>the virtual table (this is the code I have been using in my app)? Like
this:
>
>XMLAttDefList& attDefList = pComplexType->getAttDefList();
>unsigned int attCount = attDefList.getAttDefCount();
>for (unsigned int i=0; i<attCount; i++)
>{
>          XMLAttDef& attDef = attDefList.getAttDef(i);
>          attributes->add(attDef.getFullName());
>          const QName* qnm = attDef.getAttName();
>          const XMLCh* aaa = qnm->getPrefix();
>}
>
>Hope this helps,
>Alberto
>
> >Thanks again Alberto... I really appreciate your help.
> >
> >Nicolas
> >
> >
> >
> >
> >-----Original Message-----
> >From: Alberto Massari [mailto:amassari@datadirect.com]
> >Sent: Wednesday, March 01, 2006 2:32 PM
> >To: c-dev@xerces.apache.org
> >Subject: Re: Attribute namespace info through PSVI. Please help...!
> >
> >Hi Nicolas,
> >
> >At 02:00 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> > >Hi everyone,
> > >
> > >I'm trying to obtain info about an element using
> > >PSVI (trying to resolve allowed children and attributes
> > >for that specific element).
> > >
> > >I obtain a pointer to the corresponding
> > >ComplexTypeInfo object which describes the element. Then I
> > >get the names and namespaces of the allowed
> > >children for that element by using ComplextTypeInfo's
> > >elementAt(index) method and by obtaining
> > >pointers to SchemaElementDecl objects.
> > >
> > >I have a problem with the attributes, though:
> > >I get the list of attributes through
> > >getAttDefList() method of the ComplexTypeInfo object.
> > >Then I obtain a SchemaAttDef for each attribute.
> > >SchemaAttDef gives the attribute's name
> > >through its method getFullName(), but I cannot
> > >figure out any way of finding their namespaces
> > >(or namespace prefixes). Am I missing something?...
> >
> >Have you tried with SchemaAttDef::getAttName()?
> >The QName* it returns should give you prefix, local name and namespace
URI.
> >
> >Alberto
> >
> > >
> > >Can anybody please help me?
> > >
> > >Thank you so much in advance.
> > >
> > >Nicolas
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> >For additional commands, e-mail: c-dev-help@xerces.apache.org
> >
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> >For additional commands, e-mail: c-dev-help@xerces.apache.org
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
>For additional commands, e-mail: c-dev-help@xerces.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org


RE: Attribute namespace info through PSVI. Please help...!

Posted by Alberto Massari <am...@datadirect.com>.
At 11:45 AM 3/2/2006 +0200, Nicolas Tsokas wrote:
>Hi Alberto,
>
>Method getAttName() is not implemented in base class XMLAttDef. It's only
>implemented in class SchemaAttDef.

You're right, I read my code too quickly.... This is what I do:

ComplexTypeInfo& curTypeInfo = complexTypeEnum.nextElement();
if(curTypeInfo.hasAttDefs())
{
   XMLAttDefList& attrIter=curTypeInfo.getAttDefList();
   for(unsigned int i=0;i<attrIter.getAttDefCount();i++)
   {
     XMLAttDef& attr=attrIter.getAttDef(i);
     XMLAttDef::DefAttTypes ty = attr.getDefaultType();
     if(ty == XMLAttDef::Prohibited)
       continue;
     SchemaAttDef* pAttr=(SchemaAttDef*)&attr;
     if(pAttr->getAttName()->getURI()==qname.getURI())
       szName=pAttr->getFullName();
     else
       szName=getFullName(pAttr->getAttName());
   }
}

and this code has never failed.
If this doesn't help you, can you send the entire testcase you are 
using (C++ files and schema)?

Thanks,
Alberto


>Is there any way of extracting namespace/prefix information from XMLAttDef?
>
>Many thanks for replying to me...
>
>Nicolas
>
>
>-----Original Message-----
>From: Alberto Massari [mailto:amassari@datadirect.com]
>Sent: Thursday, March 02, 2006 11:08 AM
>To: c-dev@xerces.apache.org
>Subject: RE: Attribute namespace info through PSVI. Please help...!
>
>Hi Nicolas,
>
>At 02:50 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> >Hi Alberto...
> >
> >Thanks indeed for your answer...
> >
> >Yes, I've tried getAttName()... And it always gives me a pointer to
> >an invalid QName object. I mean qname->getPrefix(), qname->getLocalPart(),
> >etc. they all cause an exception...
>
>That's strange, as I have used it successfully.
>
>
> >Here's my code: (the previous part of the code is the one you posted
> >on xerces-c mail archives on 02 Feb 2005)...
> >
> >ComplexTypeInfo* pComplexType = pSchemaTypes->get(typeKey.getRawBuffer());
> >if (!pComplexType->hasAttDefs())
> >         return;
> >
> >SchemaAttDefList& attDefList =
> >         (SchemaAttDefList&)pComplexType->getAttDefList();
> >unsigned int attCount = attDefList.getAttDefCount();
> >for (unsigned int i=0; i<attCount; i++)
> >{
> >         SchemaAttDef& attDef = (SchemaAttDef&)attDefList.getAttDef(i);
> >         attributes->add(attDef.getFullName());
> >         const QName* qnm = attDef.getAttName();
> >         const XMLCh* aaa = qnm->getPrefix();
> >}
>
>Just to double check; can you remove the casts and work directly off
>the virtual table (this is the code I have been using in my app)? Like this:
>
>XMLAttDefList& attDefList = pComplexType->getAttDefList();
>unsigned int attCount = attDefList.getAttDefCount();
>for (unsigned int i=0; i<attCount; i++)
>{
>          XMLAttDef& attDef = attDefList.getAttDef(i);
>          attributes->add(attDef.getFullName());
>          const QName* qnm = attDef.getAttName();
>          const XMLCh* aaa = qnm->getPrefix();
>}
>
>Hope this helps,
>Alberto
>
> >Thanks again Alberto... I really appreciate your help.
> >
> >Nicolas
> >
> >
> >
> >
> >-----Original Message-----
> >From: Alberto Massari [mailto:amassari@datadirect.com]
> >Sent: Wednesday, March 01, 2006 2:32 PM
> >To: c-dev@xerces.apache.org
> >Subject: Re: Attribute namespace info through PSVI. Please help...!
> >
> >Hi Nicolas,
> >
> >At 02:00 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> > >Hi everyone,
> > >
> > >I'm trying to obtain info about an element using
> > >PSVI (trying to resolve allowed children and attributes
> > >for that specific element).
> > >
> > >I obtain a pointer to the corresponding
> > >ComplexTypeInfo object which describes the element. Then I
> > >get the names and namespaces of the allowed
> > >children for that element by using ComplextTypeInfo's
> > >elementAt(index) method and by obtaining
> > >pointers to SchemaElementDecl objects.
> > >
> > >I have a problem with the attributes, though:
> > >I get the list of attributes through
> > >getAttDefList() method of the ComplexTypeInfo object.
> > >Then I obtain a SchemaAttDef for each attribute.
> > >SchemaAttDef gives the attribute's name
> > >through its method getFullName(), but I cannot
> > >figure out any way of finding their namespaces
> > >(or namespace prefixes). Am I missing something?...
> >
> >Have you tried with SchemaAttDef::getAttName()?
> >The QName* it returns should give you prefix, local name and namespace URI.
> >
> >Alberto
> >
> > >
> > >Can anybody please help me?
> > >
> > >Thank you so much in advance.
> > >
> > >Nicolas
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> >For additional commands, e-mail: c-dev-help@xerces.apache.org
> >
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
> >For additional commands, e-mail: c-dev-help@xerces.apache.org
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
>For additional commands, e-mail: c-dev-help@xerces.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org


RE: Attribute namespace info through PSVI. Please help...!

Posted by Nicolas Tsokas <ts...@ekt.gr>.
Hi Alberto,

Method getAttName() is not implemented in base class XMLAttDef. It's only
implemented in class SchemaAttDef. 

Is there any way of extracting namespace/prefix information from XMLAttDef?

Many thanks for replying to me...

Nicolas


-----Original Message-----
From: Alberto Massari [mailto:amassari@datadirect.com] 
Sent: Thursday, March 02, 2006 11:08 AM
To: c-dev@xerces.apache.org
Subject: RE: Attribute namespace info through PSVI. Please help...!

Hi Nicolas,

At 02:50 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
>Hi Alberto...
>
>Thanks indeed for your answer...
>
>Yes, I've tried getAttName()... And it always gives me a pointer to
>an invalid QName object. I mean qname->getPrefix(), qname->getLocalPart(),
>etc. they all cause an exception...

That's strange, as I have used it successfully.


>Here's my code: (the previous part of the code is the one you posted
>on xerces-c mail archives on 02 Feb 2005)...
>
>ComplexTypeInfo* pComplexType = pSchemaTypes->get(typeKey.getRawBuffer());
>if (!pComplexType->hasAttDefs())
>         return;
>
>SchemaAttDefList& attDefList =
>         (SchemaAttDefList&)pComplexType->getAttDefList();
>unsigned int attCount = attDefList.getAttDefCount();
>for (unsigned int i=0; i<attCount; i++)
>{
>         SchemaAttDef& attDef = (SchemaAttDef&)attDefList.getAttDef(i);
>         attributes->add(attDef.getFullName());
>         const QName* qnm = attDef.getAttName();
>         const XMLCh* aaa = qnm->getPrefix();
>}

Just to double check; can you remove the casts and work directly off 
the virtual table (this is the code I have been using in my app)? Like this:

XMLAttDefList& attDefList = pComplexType->getAttDefList();
unsigned int attCount = attDefList.getAttDefCount();
for (unsigned int i=0; i<attCount; i++)
{
         XMLAttDef& attDef = attDefList.getAttDef(i);
         attributes->add(attDef.getFullName());
         const QName* qnm = attDef.getAttName();
         const XMLCh* aaa = qnm->getPrefix();
}

Hope this helps,
Alberto

>Thanks again Alberto... I really appreciate your help.
>
>Nicolas
>
>
>
>
>-----Original Message-----
>From: Alberto Massari [mailto:amassari@datadirect.com]
>Sent: Wednesday, March 01, 2006 2:32 PM
>To: c-dev@xerces.apache.org
>Subject: Re: Attribute namespace info through PSVI. Please help...!
>
>Hi Nicolas,
>
>At 02:00 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> >Hi everyone,
> >
> >I'm trying to obtain info about an element using
> >PSVI (trying to resolve allowed children and attributes
> >for that specific element).
> >
> >I obtain a pointer to the corresponding
> >ComplexTypeInfo object which describes the element. Then I
> >get the names and namespaces of the allowed
> >children for that element by using ComplextTypeInfo's
> >elementAt(index) method and by obtaining
> >pointers to SchemaElementDecl objects.
> >
> >I have a problem with the attributes, though:
> >I get the list of attributes through
> >getAttDefList() method of the ComplexTypeInfo object.
> >Then I obtain a SchemaAttDef for each attribute.
> >SchemaAttDef gives the attribute's name
> >through its method getFullName(), but I cannot
> >figure out any way of finding their namespaces
> >(or namespace prefixes). Am I missing something?...
>
>Have you tried with SchemaAttDef::getAttName()?
>The QName* it returns should give you prefix, local name and namespace URI.
>
>Alberto
>
> >
> >Can anybody please help me?
> >
> >Thank you so much in advance.
> >
> >Nicolas
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
>For additional commands, e-mail: c-dev-help@xerces.apache.org
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
>For additional commands, e-mail: c-dev-help@xerces.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org


RE: Attribute namespace info through PSVI. Please help...!

Posted by Alberto Massari <am...@datadirect.com>.
Hi Nicolas,

At 02:50 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
>Hi Alberto...
>
>Thanks indeed for your answer...
>
>Yes, I've tried getAttName()... And it always gives me a pointer to
>an invalid QName object. I mean qname->getPrefix(), qname->getLocalPart(),
>etc. they all cause an exception...

That's strange, as I have used it successfully.


>Here's my code: (the previous part of the code is the one you posted
>on xerces-c mail archives on 02 Feb 2005)...
>
>ComplexTypeInfo* pComplexType = pSchemaTypes->get(typeKey.getRawBuffer());
>if (!pComplexType->hasAttDefs())
>         return;
>
>SchemaAttDefList& attDefList =
>         (SchemaAttDefList&)pComplexType->getAttDefList();
>unsigned int attCount = attDefList.getAttDefCount();
>for (unsigned int i=0; i<attCount; i++)
>{
>         SchemaAttDef& attDef = (SchemaAttDef&)attDefList.getAttDef(i);
>         attributes->add(attDef.getFullName());
>         const QName* qnm = attDef.getAttName();
>         const XMLCh* aaa = qnm->getPrefix();
>}

Just to double check; can you remove the casts and work directly off 
the virtual table (this is the code I have been using in my app)? Like this:

XMLAttDefList& attDefList = pComplexType->getAttDefList();
unsigned int attCount = attDefList.getAttDefCount();
for (unsigned int i=0; i<attCount; i++)
{
         XMLAttDef& attDef = attDefList.getAttDef(i);
         attributes->add(attDef.getFullName());
         const QName* qnm = attDef.getAttName();
         const XMLCh* aaa = qnm->getPrefix();
}

Hope this helps,
Alberto

>Thanks again Alberto... I really appreciate your help.
>
>Nicolas
>
>
>
>
>-----Original Message-----
>From: Alberto Massari [mailto:amassari@datadirect.com]
>Sent: Wednesday, March 01, 2006 2:32 PM
>To: c-dev@xerces.apache.org
>Subject: Re: Attribute namespace info through PSVI. Please help...!
>
>Hi Nicolas,
>
>At 02:00 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
> >Hi everyone,
> >
> >I'm trying to obtain info about an element using
> >PSVI (trying to resolve allowed children and attributes
> >for that specific element).
> >
> >I obtain a pointer to the corresponding
> >ComplexTypeInfo object which describes the element. Then I
> >get the names and namespaces of the allowed
> >children for that element by using ComplextTypeInfo's
> >elementAt(index) method and by obtaining
> >pointers to SchemaElementDecl objects.
> >
> >I have a problem with the attributes, though:
> >I get the list of attributes through
> >getAttDefList() method of the ComplexTypeInfo object.
> >Then I obtain a SchemaAttDef for each attribute.
> >SchemaAttDef gives the attribute's name
> >through its method getFullName(), but I cannot
> >figure out any way of finding their namespaces
> >(or namespace prefixes). Am I missing something?...
>
>Have you tried with SchemaAttDef::getAttName()?
>The QName* it returns should give you prefix, local name and namespace URI.
>
>Alberto
>
> >
> >Can anybody please help me?
> >
> >Thank you so much in advance.
> >
> >Nicolas
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
>For additional commands, e-mail: c-dev-help@xerces.apache.org
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
>For additional commands, e-mail: c-dev-help@xerces.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org


RE: Attribute namespace info through PSVI. Please help...!

Posted by Nicolas Tsokas <ts...@ekt.gr>.
Hi Alberto...

Thanks indeed for your answer...

Yes, I've tried getAttName()... And it always gives me a pointer to 
an invalid QName object. I mean qname->getPrefix(), qname->getLocalPart(), 
etc. they all cause an exception...

Here's my code: (the previous part of the code is the one you posted
on xerces-c mail archives on 02 Feb 2005)...

ComplexTypeInfo* pComplexType = pSchemaTypes->get(typeKey.getRawBuffer());
if (!pComplexType->hasAttDefs())
	return;
        
SchemaAttDefList& attDefList = 
	(SchemaAttDefList&)pComplexType->getAttDefList();
unsigned int attCount = attDefList.getAttDefCount();
for (unsigned int i=0; i<attCount; i++)
{
        SchemaAttDef& attDef = (SchemaAttDef&)attDefList.getAttDef(i);
        attributes->add(attDef.getFullName());
        const QName* qnm = attDef.getAttName();
        const XMLCh* aaa = qnm->getPrefix();    
}

Thanks again Alberto... I really appreciate your help.

Nicolas




-----Original Message-----
From: Alberto Massari [mailto:amassari@datadirect.com] 
Sent: Wednesday, March 01, 2006 2:32 PM
To: c-dev@xerces.apache.org
Subject: Re: Attribute namespace info through PSVI. Please help...!

Hi Nicolas,

At 02:00 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
>Hi everyone,
>
>I'm trying to obtain info about an element using 
>PSVI (trying to resolve allowed children and attributes
>for that specific element).
>
>I obtain a pointer to the corresponding 
>ComplexTypeInfo object which describes the element. Then I
>get the names and namespaces of the allowed 
>children for that element by using ComplextTypeInfo's
>elementAt(index) method and by obtaining 
>pointers to SchemaElementDecl objects.
>
>I have a problem with the attributes, though:
>I get the list of attributes through 
>getAttDefList() method of the ComplexTypeInfo object.
>Then I obtain a SchemaAttDef for each attribute. 
>SchemaAttDef gives the attribute's name
>through its method getFullName(), but I cannot 
>figure out any way of finding their namespaces
>(or namespace prefixes). Am I missing something?...

Have you tried with SchemaAttDef::getAttName()? 
The QName* it returns should give you prefix, local name and namespace URI.

Alberto

>
>Can anybody please help me?
>
>Thank you so much in advance.
>
>Nicolas


---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org


Re: Attribute namespace info through PSVI. Please help...!

Posted by Alberto Massari <am...@datadirect.com>.
Hi Nicolas,

At 02:00 PM 3/1/2006 +0200, Nicolas Tsokas wrote:
>Hi everyone,
>
>I’m trying to obtain info about an element using 
>PSVI (trying to resolve allowed children and attributes
>for that specific element).
>
>I obtain a pointer to the corresponding 
>ComplexTypeInfo object which describes the element. Then I
>get the names and namespaces of the allowed 
>children for that element by using ComplextTypeInfo’s
>elementAt(index) method and by obtaining 
>pointers to SchemaElementDecl objects.
>
>I have a problem with the attributes, though:
>I get the list of attributes through 
>getAttDefList() method of the ComplexTypeInfo object.
>Then I obtain a SchemaAttDef for each attribute. 
>SchemaAttDef gives the attribute’s name
>through its method getFullName(), but I cannot 
>figure out any way of finding their namespaces
>(or namespace prefixes)… Am I missing something?...

Have you tried with SchemaAttDef::getAttName()? 
The QName* it returns should give you prefix, local name and namespace URI.

Alberto

>
>Can anybody please help me?
>
>Thank you so much in advance…
>
>Nicolas


---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org