On Wed, Jun 01, 2011 at 09:41:43AM -0400, Paul B. Cameron wrote:
> The primary schema declaration looks like this on-disk:
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
> elementFormDefault="qualified" attributeFormDefault="unqualified">
> 
> It's updated in-memory to this:
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
> xmlns="http://www.company.com/schemas/servermain";
> elementFormDefault="qualified" attributeFormDefault="unqualified"
> targetNamespace="http://www.company.com/schemas/servermain";>
> 
> To do so, I load the schema and:
> 1.) xmlDocGetRootElement
> 2.) xmlSetProp with "targetNamespace"
> 3.) xmlSetProp with "xmlns"

  That is wrong create a namespace with
    xmlNewNs
set it as the in-scope namespace by updating the -> ns field of all the
elements in the subtree.

> Is this the wrong way to go about this? Should I be using the NS-specific
> API's for step 3?

  yes

[...]
> > 3.) call xmlSchemaNewDocParserCtxt to create parser context and
> > xmlSchemaParse to parse the schema (which fails)
> 
>   This smells like in doing 2 you missed something with namespaces,
> and that as a result when parsing your in-memory tree teh XSD parser
> fails to find the namespaces (maybe just the prefix or something.

  I'm now sure the problem is related to building the in-memory
tree and having the namespaces correctly set.

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
dan...@veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@gnome.org
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to