Re: Still trying to validate an XML Schema

Ted Hickox <[email protected]> Mon, 17 Jun 2024 19:40:42 -0500
Newsgroups gmane.text.xml.exist
Message-ID <CAAsp6CbCHPb9506Mp2ECorC2ZOGBR79-A7NE3uL25D4=4HkuSg@mail.gmail.com>
Perhaps I didn't make myself clear in my last post.  It appears the Jaxp
function that I added to my xq code worked well enough to detect an error.
The problem is I don't know what error I created.

Here is my xquery:

xquery version "3.0";

import module namespace validation="http://exist-db.org/xquery/validation";

let $schema :=
xs:anyURI('/db/apps/HTML_Student/SVG_Ellipse_Webpage_XML_Schema.xsd')

let $instance :=
xs:anyURI('/db/apps/HTML_Student/SVG_Ellipse_Webpage_XML.xml')

return

(validation:clear-grammar-cache())

(validation:jaxp-report($instance, $schema))


Here is my instance:


<html xmlns="http://www.TedTheSpeedlearner.com" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.TedTheSpeedlearner.com SVG_Ellipse_Webpage_XML_Schema.xsd">
<head>
<title>SVG Ellipse</title>
<link rel="stylesheet" type="text/css" href="
http://localhost:8080/exist/rest/db/apps/HTML_Student/SVG_Ellipse.css"/>
<script language="javascript" src="
http://localhost:8080/exist/rest/db/apps/HTML_Student/SVG_Ellipse.js"/>
</head>
<body onload="Setup()">
<svg id="Image_Box">
<ellipse id="My_Ellipse"/>
</svg>
</body>
</html>


And here is my schema:


<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:target="
http://www.TedTheSpeedlearner.com" targetNamespace="
http://www.TedTheSpeedlearner.com" elementFormDefault="qualified">
    <complexType name="HeadType">
        <sequence>
            <element name="head" type="target:TitleType"/>
            <element name="body" type="target:BodyType"/>
        </sequence>
    </complexType>
    <complexType name="TitleType">
        <sequence>
            <element name="title" type="string"/>
            <element name="link" type="target:LinkType"/>
            <element name="script" type="target:ScriptType"/>
        </sequence>
    </complexType>
    <complexType name="LinkType">
        <attribute name="rel" type="string"/>
        <attribute name="type" type="string"/>
        <attribute name="href" type="string"/>
    </complexType>
    <complexType name="ScriptType">
        <attribute name="language" type="string"/>
        <attribute name="src" type="string"/>
    </complexType>
    <complexType name="BodyType">
        <sequence>
            <element name="svg" type="target:SvgType"/>
        </sequence>
        <attribute name="onload" type="string"/>
    </complexType>
    <complexType name="SvgType">
        <sequence>
            <element name="ellipse" type="target:EllipseType"/>
        </sequence>
        <attribute name="id" type="string"/>
    </complexType>
    <complexType name="EllipseType">
        <attribute name="id" type="string"/>
    </complexType>
    <element name="html" type="target:HeadType"/>
</schema>


And what was the error?  eXist stated that it expected a function, but it
got an xs:integer in line 6 column 2.  I can't determine what I did wrong.
Can you assist me?

On Tue, Jun 11, 2024 at 11:19 AM Florian Schmitt <
[email protected]> wrote:

> Hi Ted,
>
> i'm not sure if it works with validation:jaxp-report, too, but i got a
> simple example running with validation:jaxv-report. Schema and XML
> instance are copied from the W3 Schools example:
>
> https://www.w3schools.com/xml/schema_intro.asp
>
> ------------------------------
> schema.xsd:
> ------------------------------
> <?xml version="1.0"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
>
> <xs:element name="note">
>    <xs:complexType>
>      <xs:sequence>
>        <xs:element name="to" type="xs:string"/>
>        <xs:element name="from" type="xs:string"/>
>        <xs:element name="heading" type="xs:string"/>
>        <xs:element name="body" type="xs:string"/>
>      </xs:sequence>
>    </xs:complexType>
> </xs:element>
>
> </xs:schema>
>
> ------------------------------
> note.xml:
> ------------------------------
> <note>
>    <to>Tove</to>
>    <from>Jani</from>
>    <heading>Reminder</heading>
>    <body>Don't forget me this weekend!</body>
> </note>
>
> ------------------------------
> schema-test.xq:
> ------------------------------
> xquery version "3.0";
> import module namespace
> validation="http://exist-db.org/xquery/validation";
> let $schema := xs:anyURI('/db/xmldata/schema.xsd')
> let $instance := xs:anyURI('/db/xmldata/note.xml')
> return
> (validation:clear-grammar-cache(), validation:jaxv-report($instance,
> $schema))
>
> ------------------------------
> Output (with eXist-db 5.2.0 - sorry, currently no 6.xx available:
> ------------------------------
> 0
> <report>
>      <status>valid</status>
>      <duration unit="msec">13</duration>
> </report>
>
> HTH
> Florian
>
>
> Am 09.06.24 um 21:41 schrieb Ted Hickox:
> > I have a small update.  I made a couple of changes to my code:
> >
> > xquery version "3.0";
> > import module namespace
> > validation="http://exist-db.org/xquery/validation
> > <http://exist-db.org/xquery/validation>";
> > let $schema :=
> > xs:anyURI('/db/apps/HTML_Student/SVG_Ellipse_Webpage_XML_Schema.xsd')
> > let $instance :=
> > xs:anyURI('/db/apps/HTML_Student/SVG_Ellipse_Webpage_XML.xml')
> > return
> > (validation:clear-grammar-cache())
> > (validation:jaxp-report($instance, $schema))
> >
> > This fixed a bunch of problems.  But when I ran the code, I got this
> > information:
> >
> > image.png
> >
> > I still don't know what error I made.
> > eption>
> >
> <path>/db/apps/HTML_Student/SVG_Ellipse_Webpage_XQuery_Validator.xq</path>
> > <message>err:XPTY0004 Type error: expected function, got xs:integer
> > [at line 6, column 2, source:
> > /db/apps/HTML_Student/SVG_Ellipse_Webpage_XQuery_Validator.xq]</message>
> > </exception>
> >
> > exception>exception>
> >
> <path>/db/apps/HTML_Student/SVG_Ellipse_Webpage_XQuery_Validator.xq</path>
> > <message>err:XPTY0004 Type error: expected function, got xs:integer
> > [at line 6, column 2, source:
> > /db/apps/HTML_Student/SVG_Ellipse_Webpage_XQuery_Validator.xq]</message>
> > </exception>
> >
> <path>/db/apps/HTML_Student/SVG_Ellipse_Webpage_XQuery_Validator.xq</path>
> > <message>err:XPTY0004 Type error: expected function, got xs:integer
> > [at line 6, column 2, source:
> > /db/apps/HTML_Student/SVG_Ellipse_Webpage_XQuery_Validator.xq]</message>
> > </exception>
> >
> > On Sun, Jun 9, 2024 at 1:58 PM Ted Hickox <[email protected]
> > <mailto:[email protected]>> wrote:
> >
> >     A few months ago I was informed that the function
> >     validation:validate-report had been depreciated and is no longer
> >     available in the eXist database.  So someone suggested I use the
> >     validate:jaxp-report function.  Shortly after I received this
> >     suggestion, I tried to use it.  But it failed.  Unfortunately my
> >     life became very busy and I had to abandon my project.  Now that
> >     my life is a little calmer, I tried to play with this computer
> >     code again.  And still something is not functioning correctly.
> >     I'm still not sure what I'm doing wrong.
> >
> >     xquery version "3.0";
> >     import module namespace
> >     validation="http://exist-db.org/xquery/validation
> >     <http://exist-db.org/xquery/validation>";
> >     let $schema :=
> >     xs:anyURI('/db/apps/HTML_Student/SVG_Ellipse_Webpage_XML_Schema.xsd')
> >     let $instance :=
> >     xs:anyURI('/db/apps/HTML_Student/SVG_Ellipse_Webpage_XML.xml')
> >     return
> >     (validation:clear-grammar-cache();
> >     validation:jaxp-report($instance as item(), $enable-grammar-cache
> >     as xs:boolean, $catalogs as item()*) as node())
> >
> >
> >
> > _______________________________________________
> > Exist-open mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/exist-open
>
>
>
> _______________________________________________
> Exist-open mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/exist-open
>

_______________________________________________
Exist-open mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/exist-open