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?
Subject: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.
Subject: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.
Subject: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.
help2.zip zip file contains test files xml xsd xls
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
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"/>
...
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).