[
Lists Home |
Date Index |
Thread Index
]
Thanks -- I will poke about with this, and see where it takes me.
Any suggestions as to other lists where this question might be relevant?
Ian
On Fri, 3 Jan 2003, Rick Jelliffe wrote:
> From: "Ian Graham" <igraham@ic-unix.ic.utoronto.ca>
>
> > Of course you're right that XPAth's won't work if the document is not well
> > formed: but I'm more interested in the case where it is well formed, and
> > where I want the error report to be somehow positioned in the 'business
> > layer' of the application as defined by the messages, rather than at the
> > mid-level layer of schema validation. That is, I'd like the XML error
> > report to make sense from the application's business context -- and
> > hopefully be understandable to a business analyst reading response
> > messages, and potentially the business developer writing code.
>
> This is pretty much where Schematron can fit in. Here is a (complete but
> untested) schema for your example.
>
> <schema xmlns="http://www.ascc.net/xml/schematron">
> <title>Example for Ian</title>
>
> <pattern>
>
> <rule context="purchaseOrder/partType">
> <assert test="string-length(normalize-space(substring-after(., '-'))) = 5
> and number(substring-after( ., '-' ))"
> diagnostics="d1" >
> The piece of a partType after the - is should be 5 digits.
> </assert>
> </rule>
>
> <rule context="purchaseOrder/deliverBy">
> <assert test="number(.) > number(document('http://dateserver.eg.com/getCurrentDate')/date/.)"
> diagnostics="d2">
> The deliverBy date should be greater than the current date.
> </assert>
> </rule>
>
> </pattern>
>
> <diagnostics>
> <diagnostic id="d1">InvalidPartNumber</diagnostic>
> <diagnostic id="d2">dateInPast</diagnostic>
> </diagnostics>
>
> </schema>
>
> In Schematron you can associate any assertion with a diagnostics section.
> This can contain additional information for an application to use. In this
> case it is just your error type.
>
> The current date could come from some function, but instead here we
> let it come from some web server which returns an xml file
> <date>20030101</date>
> This will only work on the ISO 8601 date format with no decorations,
> treated just as a number.
>
> > I admit this is a lot of half-baked thoughts in one letter, but there
> > seems to be something interesting in here ....
>
> In order to generate the error format you want, you only need to customize
> the schematron 1.5 skeleton program: this already provides a template
> to generate the Xpath for a particular error, etc (thanks to Francis Norton
> and others), so you are 90% there. If you are using Windows, my company provides
> a free drag-and-drop shell (Topologi Schematron Validator), which will make
> development and testing easier. http://www.topologi.com/
>
> Cheers
> Rick Jelliffe
>
> -----------------------------------------------------------------
> The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
> initiative of OASIS <http://www.oasis-open.org>
>
> The list archives are at http://lists.xml.org/archives/xml-dev/
>
> To subscribe or unsubscribe from this list use the subscription
> manager: <http://lists.xml.org/ob/adm.pl>
>
>
|