XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Dean MeliaSubject: Schema Awareness - Validating Output
Author: Dean Melia
Date: 06 Feb 2006 07:36 PM
For Validating Output I am creating a transitional xml document rather than an xhtml as per the example.
I am expecting that the output xml I create will be validated against the output schema I have created.
I have defined the following :
dean.xml (same input as used for Validating Input)
dean1.xsd schema that output should conform to. Root element is 'Stats'
dean1.xsl - with schema-import statement for dean1.xsd, with match on schema-element(multimedia) - Created scenario dean1 with Source XML URL of dean.xml
This isnt working.
An error is issued: XTSE0340: XSLT Pattern syntax error at char 26 on line 20 in {schema-element(multimedia)}:
There is no declaration for element <multimedia> in an imported schema
Well that explanation is correct but doesnt help me.
Theres no point in me importing the dean.xsd, as that will mean I am validating Input again?
I want to validate the output against the output schema. How do I set up the above components to do this?


UnknownEvalQuery1OutVal.zip
EvaluationTestFile

Postnext
Dean MeliaSubject: Schema Awareness - Validating Output
Author: Dean Melia
Date: 06 Feb 2006 07:41 PM
I have also attached the input schema


Unknowndean.xsd
InputSchema

Postnext
Tony LavinioSubject: Schema Awareness - Validating Output
Author: Tony Lavinio
Date: 07 Feb 2006 09:58 AM
You can validate both on incoming and outgoing schemas, but... in your
case, there are two things missing.

First, yes, you must import the dean.xsd schema that corresponds to the
output schema.

But neither of your schemas has namespaces; so the processor doesn't
know which schema belongs where. When you followed the XHTML example,
you may have noticed that XHTML does have a target namespace, and so
that's why Saxon was able to figure out the difference between validating
on the input document (which had one namespace) and the output document.

Postnext
Dean MeliaSubject: Schema Awareness - Validating Output
Author: Dean Melia
Date: 09 Feb 2006 02:31 AM
I have added namespaces as suggested, and ensured these are working ok by running the stylesheets successfully. I then changed one of the selection criteria to obtain a string from the input to be supplied to the output where the output schema defines the output field as a decimal. I was expecting an error to be issued by Output Validation. Could you take a look at the attached and advise? Many thanks.

Postnext
Dean MeliaSubject: Schema Awareness - Validating Output
Author: Dean Melia
Date: 09 Feb 2006 02:31 AM
I have added namespaces as suggested, and ensured these are working ok by running the stylesheets successfully. I then changed one of the selection criteria to obtain a string from the input to be supplied to the output where the output schema defines the output field as a decimal. I was expecting an error to be issued by Output Validation. Could you take a look at the attached and advise? Many thanks.


Unknownhelp2.zip
zip file contains test files xml xsd xls

Postnext
Minollo I.Subject: Schema Awareness - Validating Output
Author: Minollo I.
Date: 09 Feb 2006 09:01 AM
Dean,
the example you attached is correctly validating the input, but it's not doing so with the output for two reasons:

- The dean1.xsd schema that seems to correspond to the output uses ".../LTS" as target namespace; but your XSLT is currently generating output on the default namespace
- You haven't instructed XSLT to perform output validation (as explained in http://www.stylusstudio.com/schema_aware.html (look for "xsl:validation")

Changing your XSLT to be...
...
<xsl:template match="schema-element(dmi:multimedia)" xmlns="http://www.lendtech.com.au/structures/LTS">
<Stats Type="Multimedia" xsl:validation="strict">

...(just as an example), will trigger the error you were expecting:
Validation error: on line 12 of file:///x:/test/dean.xsl:
Invalid value {Multimedia}. Value "Multimedia" violates the enumeration facet "MultimediaExtract" of the type of attribute Type

Hope this helps,
Minollo

Postnext
Minollo I.Subject: Schema Awareness - Validating Output
Author: Minollo I.
Date: 09 Feb 2006 09:28 AM
...I forgot mentioning that you also need to import dean1.xsd, of course:
...
<xsl:import-schema namespace="http://www.lendtech.com.au/structures/LTS" schema-location="dean1.xsd"/>
...

Minollo

Postnext
Dean MeliaSubject: Schema Awareness - Validating Output
Author: Dean Melia
Date: 09 Feb 2006 07:03 PM
Cool! Thanks you guys, I am delighted. Now I'll try this out on some heavy duty stylesheets to guage how much it might benefit us.

Actually I hadnt overlooked those pointers that you mentioned. I had tried them but couldnt find the right combination and so left them out again. The solution you have provided however has made me realise I dont entirely get the intricacies of namespaces. Can you point to any good namespace articles, maybe with examples, that may enlighten me further? (Of course I will search the SSDN also).

thanks again, Dean.

Posttop
Minollo I.Subject: Schema Awareness - Validating Output
Author: Minollo I.
Date: 09 Feb 2006 09:52 PM
"Definitive XML Schema" by Priscilla Walmsley is a book I would feel like recommending.

If you want an XSLT 2.0 specific book, then I would go with Michael Kay's "XSLT 2.0 Programmer's Reference".

Minollo

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.