Subject:XSD validator errors Author:Simon Francis Date:02 Feb 2006 06:12 PM
I'm using StylusValidator.exe to validate an xml document against a schema.
This document has a couple of attributes from a different name space.
The validator is throwing an error saying that these attributes should be unqaulified however I can't seem to get my schema document to make then unqualified.
file:///c:/vault/common/content/dtd-conversion/updates/sgml/fisheries-law/ANNTG-FISH!1-ACT-NZL-PUB-Y.1977-28.converted.xml:1,362: Attribute 'anchor' should be un-qualified
file:///c:/vault/common/content/dtd-conversion/updates/sgml/fisheries-law/ANNTG-FISH!1-ACT-NZL-PUB-Y.1977-28.converted.xml:1,362: Attribute 'position' should be un-qualified
file:///c:/vault/common/content/dtd-conversion/updates/sgml/fisheries-law/ANNTG-FISH!1-ACT-NZL-PUB-Y.1977-28.converted.xml:1,3211: Attribute 'anchor' should be un-qualified
file:///c:/vault/common/content/dtd-conversion/updates/sgml/fisheries-law/ANNTG-FISH!1-ACT-NZL-PUB-Y.1977-28.converted.xml:1,3211: Attribute 'position' should be un-qualified
file:///c:/vault/common/content/dtd-conversion/updates/sgml/fisheries-law/ANNTG-FISH!1-ACT-NZL-PUB-Y.1977-28.converted.xml:1,4720: Attribute 'anchor' should be un-qualified
file:///c:/vault/common/content/dtd-conversion/updates/sgml/fisheries-law/ANNTG-FISH!1-ACT-NZL-PUB-Y.1977-28.converted.xml:1,4720: Attribute 'position' should be un-qualified
Validation FAILED
Subject:XSD validator errors Author:Tony Lavinio Date:02 Feb 2006 10:56 PM
You've said that anchor and position should be unqualified, which
means in no namespace, and then you've forced them into a namespace
with the xpb: prefix - which means they've been qualified.
Either remove the xpb: prefix, or make them qualified so that they
will belong in the namespace of the schema and the document.
Subject:XSD validator errors Author:Simon Francis Date:06 Feb 2006 04:25 PM
Thanks for the info
I've tried changing the default forms and correcting the anchor and position attribute, form="qualified", however the validator is still producing the following error. What else am I doing wrong here?
file:///c:/vault/common/content/dtd-conversion/updates/sgml/fisheries-law/ANNTG-
FISH!1-ACT-NZL-PUB-Y.1977-28.converted.xml:2,169: Attribute 'anchor' should be un-qualified
file:///c:/vault/common/content/dtd-conversion/updates/sgml/fisheries-law/ANNTG-
FISH!1-ACT-NZL-PUB-Y.1977-28.converted.xml:4,2527: Attribute 'anchor' should be un-qualified
file:///c:/vault/common/content/dtd-conversion/updates/sgml/fisheries-law/ANNTG-
FISH!1-ACT-NZL-PUB-Y.1977-28.converted.xml:6,1159: Attribute 'anchor' should be un-qualified
Validation FAILED
Subject:XSD validator errors Author:Tony Lavinio Date:07 Feb 2006 09:37 AM
Why do you want the elements unqualified but their attributes
qualified?
The simplest case would be to make the attributes unqualified,
and just drop the xpb: prefix. This is generally the way things
are done.
You can't have the elements come from a schema with no target
namespace and their attributes come from the same schema with
a target namespace.
Subject:XSD validator errors Author:Simon Francis Date:07 Feb 2006 05:14 PM
Unfortunately they're legacy production system attributes which can't be changed.
I beleive that the xpb namespace has been used on this attribute because its not part of the content and its inserted and used by the production system, it isn't output.
Could you please tell me what would I need to change to create a valid schema given that changing the namespaces isn't an option?
Subject:XSD validator errors Author:Minollo I. Date:08 Feb 2006 03:56 PM
Simon,
top level definitions always belong to the target namespace declared in the schema. Your schema doesn't seem to define any target namespace, that implies that the <annotation> element and it attributes must live in the default namespace, no matter if marked as qualified or unqualified.
...and then you use:
<xpb:annotation id="ANNTG-FISH!1-ACT-NZL-PUB-Y.1977-28~ANNT.!1"
xpb:anchor="id(ACT-NZL-PUB-Y.1977-28~BDY~PT.1~S.3)" xpb:position="below" xmlns:xpb="http://www.brookers.co.nz/namespace/xpb/1.0">...
...or you define xmlns to be the same namespace as xpb and then use <annotation>
In alternative, if <annotation> and @anchor and @position do need to live in different namespaces, then you need to split the schema in two, one definining items in the xpb namespace:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.brookers.co.nz/namespace/xpb/1.0" xmlns="http://www.brookers.co.nz/namespace/xpb/1.0">
<xsd:attribute name="anchor"/>
<xsd:attribute name="position" default="below">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="before"/>
<xsd:enumeration value="after"/>
<xsd:enumeration value="below"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:schema>
...and one definining items in the default namespace and referencing the first one:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xpb="http://www.brookers.co.nz/namespace/xpb/1.0" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:import schemaLocation="file:///x:/attributes.xsd" namespace="http://www.brookers.co.nz/namespace/xpb/1.0"/>
<xsd:element name="annotation">
<xsd:complexType>
<xsd:attribute name="id"/>
<xsd:attribute use="required" ref="xpb:anchor"/>
<xsd:attribute default="below" ref="xpb:position"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>