The source XML is books.xml, and Schema is books.xsd found in
the folder samples\data of Saxon distribution.
The example works fine with the following command line:
java com.saxonica.Transform -val books.xml books.xsl
The source document gets validated, and I get the proper output.
However, I am curious what is happening in the following cases:
1) I give the command line as, java com.saxonica.Transform
books.xml books.xsl (i.e. no -val option)
The following message comes from the stylesheet:
Source document is not a validated book list
The "instance of" test fails because it is testing the type annotation of
the element node, and the type annotation is "xs:untyped" if the document
has not been validated.
2) I give the command line as, java com.saxonica.Transform
-val books.xml books.xsl
but I remove the line <xsl:import-schema schema-location="books.xsd"
/> from the stylesheet,
I get message,
XPST0003: XPath syntax error at char 42 on line 4 in {...e of
schema-element(B
OOKLIS...}:
No schema has been imported for namespace ''
You can't use the name of a schema-defined type in your stylesheet unless
you import the schema. The "instance of" test won't even compile in this
situation; it never gets as far as reading the source document.
According to my testing, it seems that to validate source
document, -val option is a must, and also xsl:import-schema
is a must to include in the stylesheet. i.e. both these
conditions must be fulfilled for the source document to get
validated by the schema, and is usable by the stylesheet.
-val is necessary to create the type annotations; import-schema is necessary
to refer to the type in your stylesheet.
Michael Kay
http://www.saxonica.com/
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--