[xsd-users] Re: Accessing embedded sub-schemas
    Boris Kolpackov 
    boris at codesynthesis.com
       
    Fri Jun 30 09:50:32 EDT 2006
    
    
  
Hi Matt,
Matt Burnham <mwburn at mhpcc.hpc.mil> writes:
> From my previous email the issue with, "Trying to access a container
> directly won't compile", works if I do this.
>    event::detail::type& dtl = obj->detail().get();
>        instead of
>    event::detail& dtl = obj->detail().get();
Right, that should work.
> When I make this change in the keep-dom approach, I can now create a
> valid DOMElement, and the exception (since the DOMElement created was
> NULL) goes away.  I'm now down to actually "parsing" the embedded schema
> using the following code:
>    class embedded edata( ede );
> This doesn't work, and the only "Dom" constructor I find for the
> embedded class takes a DOMDocument.  I've gone through the xerces API
> docs and can't find any way to create a DOMDocument from the DOMElement,
> or to simply create a string/stream,etc from the DOMElement).
Try compiling your tmp_embedded.xsd with the --morph-anonymous and
--root-element-none options. This will result in only embedded_data
class being generated. Then you can use:
embedded_data edata (ede, 0, 0);
> Also, in the substitution group approach, I can also access the detail
> container directly, but still can't create an xml_schema::type directly
> from it.
If 'detail' has the following definition
<xs:element name="content" type="xs:anyType"/>
<xs:complexType name="detail_type">
  <xs:sequence>
    <xs:element ref="content" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
<xs:element name="detail" type="detail_type"/>
then you can write something like this:
detail& d = ...
for (detail_type::content::iterator i (d.content ().begin ());
     i != d.content ().end ();
     ++i)
{
  xml_schema::type& c = *i;
  if (embedded_data* ed = dynamic_cast<embedded_data*> (&c))
  {
    // Got embedded_data
  }
}
BTW, I downloaded the CoT schemas and now I can see where this design
is coming from.
hth,
-boris
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 652 bytes
Desc: Digital signature
Url : http://codesynthesis.com/pipermail/xsd-users/attachments/20060630/68aa9dbf/attachment.pgp
    
    
More information about the xsd-users
mailing list