Thanks for your input everyone. I've got it working by splitting the schema up into a number of different documents, avoiding the need to use targetNamespace on the elements.
Kind regards, Julian On Fri, Aug 7, 2015 at 4:05 PM, Michael Glavassevich <mrgla...@ca.ibm.com> wrote: > There was an enhancement in XML Schema 1.1 which allows targetNamespace on > <xs:element> but I recall that it only applies to (and is only allowed on) > local element declarations [1]. > > [1] http://www.w3.org/TR/xmlschema11-1/#dcl.elt.local > > Michael Glavassevich > XML Technologies and WAS Development > IBM Toronto Lab > E-mail: mrgla...@ca.ibm.com > E-mail: mrgla...@apache.org > > jeff.gr...@gmail.com wrote on 08/06/2015 06:09:23 PM: > > > I am mainly familiar with XML Schema 1.0, so it's possible my > > assertions below have been supplanted in 1.1. > > > > The purpose of a schema is to declare the contents of a single > > namespace, the target namespace, which is declared on the 'schema' > element. > > > > Constructs of another namespace cannot be declared in this schema; > > they can only be referenced, using qualified names. > > > > So <element name="xyz" ...> declares an element in the target > namespace. > > <element ref="other:abc" ...> refers to a global element in the > > namespace declared to correspond to the prefix "other". > > > > Jeff > > > > On Thu, Aug 6, 2015 at 2:59 PM, Julian Cromarty > <julian.croma...@gmail.com > > > wrote: > > Hi, > > > > Unfortunately I can't just use the targetNamespace in the schema > > element. There are top-level elements of the global targetNamespace > > and also top level elements from another namespace. Both of these > > can contain elements from both namespaces, thus the need to refer to > > another namespace at the element level. It's a strange requirement, > > I admit. That said, if element-level targetNamespaces aren't for > > referring to namespaces other than the targetNamespace specified in > > the schema element, what are they for? > > > > As for the top-level elements requiring a name, I spotted that > > mistake after sending the email. It's just a typo from reducing the > > xsd to a minimal test case. That said, it still reproduces the > > problem even when the top-level element is correctly given a name. > > > Cheers, > > > Julian > > > > On Thu, Aug 6, 2015 at 7:41 PM, Bernd Eckenfels <e...@zusammenkunft.net > > > wrote: > > Hello, > > > > that is interesting, I see targetNamespace in the XML-Schema 1.1 spec > > for top level elements and attributes. > > > > http://www.w3.org/TR/xmlschema11-1/ > > > > But it is not in the XML Schema.xsd. (only one occurence of > > 'name="targetNamespace"') on the <schema> element. > > > > http://www.w3.org/2001/XMLSchema.xsd > > > > BTW: top level elements do require a name="" attribute. You have > > specified it on the <simpleType> I think thats not correct. > > > > In your case, can you just use the targetNamespace on the schema > > element? This is the most common usage as it cannot be mixed anyway. > > > > Gruss > > Bernd > > > > > > Am Thu, 6 Aug 2015 18:58:22 +0100 > > schrieb Julian Cromarty <julian.croma...@gmail.com>: > > > > > Hi, > > > > > > I'm trying to write a schema using the 1.1 schema language and I need > > > to be able to set the targetNamespace attribute on some of the > > > elements. When I try and create a Validator to validate XML against > > > the schema however, I get an instance of XMLSchema11Factory but when I > > > pass the XSD file to the factory's newSchema() method I always get the > > > following exception: > > > > > > s4s-att-not-allowed: Attribute 'targetNamespace" cannot appear in > > > element 'element'. > > > > > > I've trimmed the XSD down to a minimal test case that reproduces the > > > problem: > > > > > > <?xml version="1.0" encoding="UTF-8"?> > > > > > > <xs:schema targetNamespace="http://www.foo.com" > > > xmlns="http://www.foo.com" xmlns:other="http://www.bar.com" > > > xmlns:xs="http://www.w3.org/2001/XMLSchema"> > > > <xs:element targetNamespace="http://www.bar.com"> > > > <xs:simpleType name="ans"> > > > <xs:restriction base="xs:string"/> > > > </xs:simpleType> > > > </xs:element> > > > </xs:schema> > > > > > > And here is the code I'm using to try and create the validator > > > > > > System.setProperty("javax.xml.validation.SchemaFactory:http:// > > www.w3.org/XML/XMLSchema/v1.1", > > > "org.apache.xerces.jaxp.validation.XMLSchema11Factory"); > > > SchemaFactory factory = > > > SchemaFactory.newInstance(" > http://www.w3.org/XML/XMLSchema/v1.1"); > > > Schema schema = > > > factory.newSchema(new > > > StreamSource(ClassLoader.getSystemResourceAsStream("test.xsd"))); > > > xmlValidator = schema.newValidator(); > > > > > > Does anyone have any idea why this isn't working? > > > > > > Kind regards, > > > > > > Julian > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org > > > For additional commands, e-mail: j-users-h...@xerces.apache.org > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org > For additional commands, e-mail: j-users-h...@xerces.apache.org > >