Not sure why you have the doctype declaration in there... perhaps your parser 
is missing XMLSchema.dtd?
In my xml.xsd there is no such declaration, I fetched it from 
https://www.w3.org/2001/xml.xsd

Best, Daniel

Von: BaseX-Talk <basex-talk-boun...@mailman.uni-konstanz.de> Im Auftrag von 
Hans-Juergen Rennau
Gesendet: Mittwoch, 31. August 2022 21:21
An: BaseX <basex-talk@mailman.uni-konstanz.de>
Betreff: [basex-talk] Problem with validate:xsd-report

Dear BaseX people,

I encounter a problem with validate:xsd-report(), more particular with using a 
schema importing the well-known xml.xsd. The imported attribute declaration 
(xml:base) is not found.

I am pretty sure that it is my fault, but I just can't find my error - could 
you take a look?

(1) Document: doc.xml

<book xml:base="/a/b/c"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:noNamespaceSchemaLocation="schema.xsd">
    <author>xyz</author>
</book>

(2) Schema: schema.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
elementFormDefault="qualified">
    <xs:import namespace="http://www.w3.org/XML/1998/namespace"; 
schemaLocation="xml.xsd"/>
    <xs:element name="book">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="author" type="xs:string"/>
            </xs:sequence>
            <xs:attribute ref="xml:base"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

(In the same folder, a downloaded copy of xml.xsd is stored - for a snippet, 
see PS)

(3) Query: validate.xq

let $doc := 'doc.xml'
let $xsd := 'schema.xsd'
return validate:xsd-report($doc, $xsd)

(4) Result:

basex validate.xq
=>
<report>
  <status>invalid</status>
  <message level="Fatal" line="9" column="43" 
url="file:/C:/projects/d2type/jats/test-validation/schema.xsd">src-resolve: 
Cannot resolve the name 'xml:base' to a(n) 'attribute declaration' component.
  </message>
</report>

I do not understand why the import seems to be ignored. Validating with oXygen 
works fine, but I suppose that oXygen ignores the @schemaLocation.

If you see the reason, please let me know.

Cheers,
Hans-Jürgen

PS: Snippet from xml.xsd, stored in the same folder:

<?xml version='1.0'?>
<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" >
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"; 
xmlns:xs="http://www.w3.org/2001/XMLSchema";  xml:lang="en">
  ...
  <xs:attribute name="base" type="xs:anyURI">
    <xs:annotation>
      <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
                       information about this attribute.</xs:documentation>
    </xs:annotation>
  </xs:attribute>
  ...
</xs:schema>


Reply via email to