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

Reply via email to