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
>
>

Reply via email to