Subject: RE: [xsl] XSD Validation with XSLT From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Fri, 10 Dec 2004 09:27:04 -0000 |
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@xxxxxxxxxxx] > Sent: 10 December 2004 08:42 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] XSD Validation with XSLT, Robert Soesemann | Thread | RE: [xsl] XSD Validation with XSLT, Marian Olteanu |
Re: [xsl] In which sequence should , Colin Paul Adams | Date | RE: [xsl] XSD Validation with XSLT, Robert Soesemann |
Month |