xsl-list
[Top] [All Lists]

RE: XSD Validation with XSLT

2004-12-10 02:33:56
Hello Michael,

Although this might be a good idea, I can't really go that way, because
I want to do this without writing any custom code (e.g. Java handling
Exceptions)

Couldn't I just use document() to compare the current document with the
XSDs requirements?

Thanks in advance,

Robert

-----Original Message-----
From: Michael Kay [mailto:mike(_at_)saxonica(_dot_)com] 
Sent: Freitag, 10. Dezember 2004 10:27
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] XSD Validation with XSLT


Interesting! XSLT 2.0 takes you some of the way there, but not the whole
way.

You can validate an individual employee element in XSLT 2.0 like this:

<xsl:template match="employee">
  <xsl:copy-of select="." validation="strict"/>
</xsl:template>

but this leaves open the question of what happens if validation fails.
According to the spec, any validation failure is a fatal error. Saxon
has a switch (-vw on the command line) to treat validation failures
instead as warnings. What it does in such cases is to notify the JAXP
ErrorListener of the failure, and insert a comment into the output file
to describe the validation error. It wouldn't be too difficult to go one
step further and call some kind of user hook to attempt a repair - at
least in particular well-defined cases.

(This needs the schema-aware version of Saxon, of course)

Michael Kay
http://www.saxonica.com/

-----Original Message-----
From: Robert Soesemann [mailto:rsoesemann(_at_)sapient(_dot_)com]
Sent: 10 December 2004 08:42
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] XSD Validation with XSLT

Hello,

I guess my question might seem somewhat strange. The context
is, that I
need to bring in content into a CMS that will validate it againts XML
Schema files. Some of the XML files that I want to import might not
provide data where the datamodel of the CMS might require this. 

My idea was to validate the input against a xsd *by means of XSLT*. 
This would *not need to validate the whole structure but only test 
whether elements with unique names have a value or not. I a required 
field is found to be empty a predefined value should be inserted. 
(e.g. a -1 for xs:integer or n/a for xs:string)

To give you an example of my structure:
XML:
----
<employee>
      <name>Tom</name>
      <id></id>                               <-- is required 
      <managedBy>Hans<managedBy>              <-- is required 
      <manages>Frank</manages>                
</employee>

XSD:
----
<xs:element name="employee">
              <xs:complexType>
                      <xs:choice minOccurs="0" maxOccurs="1">
                              <xs:element name="name"
type="xs:string"/>
                              <xs:element name="id" type="xs:string"
minOccurs="1"/>
...


OUTPUT:
-------
<employee>
      <name>Tom</name>
      <id>n/a</id>                            <-- is required 
      <managedBy>Hans<managedBy>              <-- is required 
      <manages>Frank</manages>                
</employee>

Any help is very welcome.

Robert

--~------------------------------------------------------------------
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>
--~--




--~------------------------------------------------------------------
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>
--~--


--~------------------------------------------------------------------
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>
--~--



<Prev in Thread] Current Thread [Next in Thread>