That's what I call a born trouble shooter. After removing the declaration, it works. THANK YOU, Daniel!

Amazing - I had downloaded the XSD from https://www.w3.org/2001/03/xml.xsd (which was suggested by Google).

Kind regards -
Hans-Jürgen
Am Donnerstag, 1. September 2022 um 10:00:39 MESZ hat Zimmel, Daniel <d.zimmel@esvmedien.de> Folgendes geschrieben:


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