Hi Steve,
I think you need something like this:
import schema "uri-of-your-schema-you-are-importing" at "schema-path"
declare namespace foo="uri-of-your-schema-you-are-importing"
define variable $input as element(foo:result) { doc('myfile.xml')/* }
You are correct that schemas are used for typing. There are some other
threads that talk about schemas like this one:
http://markmail.org/message/snhlrjv5kp4bbfrk
-Danny
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Steve
Mallen
Sent: Monday, August 11, 2008 2:20 AM
To: General Mark Logic Developer Discussion
Subject: [MarkLogic Dev General] Schema aware XQuery and XML
SerializationOptions in ML 3.2?
Hi everyone,
The dev guide and admin docs talk about how to load and retrieve an XML
Schema, and in various parts of the marketing material Mark Logic is
described as "schema-aware". The dev guide has a section on Loading
Schemas and says:
"Schemas are automatically invoked by the server when loading
documents (for conducting content repair) and when evaluating queries
(for proper data typing)."
and
"The most common activity developers want to carry out with schema
is to read them."
I've managed to load a schema into the database, and import it into my
XQuery (using "import schema"), but how can I declare variables as
elements of my schema?
In XQuery 1.0, I can do this:
declare variable $input as schema-element(result) :=
doc('myfile.xml')/*;
There is another similar construct for attributes. Does anyone know
what the equivalent syntax in ML 3.2 (XQuery WD 2003) is? I've tried
reading the specs but they're not very clear on the issue. It seems
that my schemas are not being automatically invoked, as I can construct
XPath expressions which do not conform to my Schema and the query
processor does not complain.
Can anyone explain the "schema-awareness" of ML? What does it use the
schema for? As I understand it, I can't validate documents using the
Schema?
As an unrelated XQuery side issue, I'd also like to have some control
over XML serialization. What control does ML give me in this regard?
The dev guide seems silent on the issue. For example, I'd like to be
able to output a DOCTYPE and specify an encoding for my results. In
XSLT I can do this:
<xsl:output doctype-public=""-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system=""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
encoding="UTF-8" />
http://www.w3.org/TR/xslt-xquery-serialization/ lists many other
options. There are "declare options" settings for these in eXist. Can
I do the equivalent in ML - or is this not possible?
Many thanks,
-Steve
p.s. The following article by Michael Kay has a very good overview of
schema aware queries, and it is from here that I got the idea:
http://www.stylusstudio.com/schema_aware.html
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general