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