[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
xml:lang namespace problem
Please help!
I'm trying to use Xerces-J CVS (2.0 beta 3 beyond) version to
validate the xml:lang namespace, but got the following error:
[Error] test.xml:38:25: cvc-complex-type.3.2.2: Attrib
ute 'xml:lang' is not valid respect to the attribute wildcard of
Elment 'FreeText'.
Is my example incorrect or is something else? Can anyone help?
I'm enclosing the .xsd and .xml at the bottom.
Thanks!
--Wo
--------------- test.xsd ---------------
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:mpeg:mpeg7:schema:2001"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:mpeg7="urn:mpeg:mpeg7:schema:2001"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="xml-1998.xsd"/>
<element name="Root">
<complexType>
<sequence>
<element name="FreeText"
type="mpeg7:TextualType" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<complexType name="TextualBaseType" abstract="true">
<simpleContent>
<extension base="string">
<attribute ref="xml:lang" use="optional"/>
<!-- omitted for simplicity
<attribute name="phoneticTranscription"
use="optional">
<simpleType>
<list
itemType="mpeg7:PhoneType"/>
</simpleType>
</attribute>
<attribute name="phoneticAlphabet"
type="mpeg7:phoneticAlphabetType" use="optional" default="sampa"/>
-->
</extension>
</simpleContent>
</complexType>
<!-- Definition of Textual datatype -->
<complexType name="TextualType">
<simpleContent>
<extension base="mpeg7:TextualBaseType"/>
</simpleContent>
</complexType>
</schema>
------------ xml-1998.xsd -----------
<?xml version="1.0"?>
<schema targetNamespace="http://www.w3.org/XML/1998/namespace"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:x="http://www.w3.org/XML/1998/namespace">
<annotation>
<documentation>This schema defines attributes and an attribute
group
suitable for use by
schemas wishing to allow xml:lang or xml:space attributes
on elements they define.
To enable this, such a schema must first declare the XML
namespace, and then import this schema
for the XML namespace, e.g. as follows:
<schema . . . xmlns:xml="http://www.w3.org/XML/1998/namespace">
. . .
<import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/XML/2000/10/xml.xsd"/>
Subsequently, qualified reference to either of the attributes
or the group defined below will have the desired effect, e.g.
<type . . .>
. . .
<attributeGroup ref="xml:specialAttrs"/>
will define a type which will schema-validate a instance
element with both xml:space and xml:lang attribute</documentation>
</annotation>
<attribute name="lang" type="language">
<annotation>
<documentation>In due course, we should install the
relevant ISO 2- and 3-letter
codes as the enumerated possible values . . .</documentation>
</annotation>
</attribute>
<attribute name="space" default="preserve">
<simpleType>
<restriction base="NCName">
<enumeration value="default"/>
<enumeration value="preserve"/>
</restriction>
</simpleType>
</attribute>
<attributeGroup name="specialAttrs">
<attribute ref="x:lang"/>
<attribute ref="x:space"/>
</attributeGroup>
</schema>
------------ test.xml ---------------
<?xml version="1.0" encoding="iso-8859-1"?>
<Root xmlns="urn:mpeg:mpeg7:schema:2001"
xmlns:mpeg7="urn:mpeg:mpeg7:schema:2001"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mpeg:mpeg7:schema:2001 test.xsd">
<FreeText xml:lang="us">Hello world!!</FreeText>
<FreeText xml:lang="jp">Sekai yo Kon-nichiwa!!</FreeText>
</Root>