[Schematron] Help sought: implementation of Character Repertoire in XSLT2 for embedding in schematron

Dave Pawson dave.pawson at gmail.com
Mon Sep 22 05:21:10 EDT 2008

2008/9/22 Rick Jelliffe <rjelliffe at allette.com.au>:

> Good point.  The <properties> idea certainly needs feedback and comment,
> nothing is baked.
> Rather than using foreign attributes, a mechanism like this allows single
> definition-multiple use. This is
> very useful where the same properties need to be applied to different uses.
> <schema ...><title>Stubbed schema to show embedded CRepDL script</title>
> <pattern>
>  <rule test="x">
>   <assert test="true()"        properties="iso8859-15-text http-iri
> current-section current-text"    >The <name/> element should be a http IRI
> that only contain ISO 8859-15 text</assert>
>  </rule>
> </pattern>
>  <properties>
>   <property id="iso8859-15-text ">
>      <cdrl:union>
>          <cdrl:char>
>          ....
>      </cdrl:union>
>  </property>
>  <property id="http-iri" >
>        <xsd:anyUri>
>                <xsd:pattern value="http:.*"/>
>        </xsd:anyUri>
>  <property>
>  <property id="current-section">
>        <sch:value-of select="ancestor::section[1]/title" />
>  </property>
>  <property id="current-text">
>        <sch:value-of select="." />
>  </property>
>  </properties>
> </schema>
> In this example, we have properties for
>   1) the character repertoire
>   2) the XSD datatype
>   3) dynamic text for some other information

I like that!
 <assert test="true()"        properties="iso8859-15-text http-iri
current-section current-text"    >

The vague space separator as per idrefs I'm less keen on?
Is there a boolean relationship?
properties="iso8859-15-text and http-iri and current-section
current-text ? For instance?

This property and this property and this property?

Perhaps this is mixing up different classes of properties?
repertoire is true
datatype = iri  (boolean but not expressed as such?)
current-text is this??? That doesn't quite fit does it?

I like expressing multiple constraints though. How to get some form of
consistency of expression?

> The previous system I had prototyped used different attributes for each:
>  <assert test="true()"  ext:cdrl-type="ISO-8859-15"  ext:xsd-type="http-iri"
> but I didn't see that this kind of specificity bought anything other than
> pain.

Syntactically these are very similar and clearly boolean though?
A && B && C.

> Schematron schemas are outside-in: the assertion text says what should be,
> and the test implements this as best
> as possible. XSD (and RELAX NG) schemas are inside-out: the content models
> say what should be and then
> you may have some comments to say constraints that cannot be expressed.
> So the use of text="true()" and @properties may indeed look strange and over
> generic ("more meta than thou"
> is the witticism I heard at W3C about this kind of design issue), but I
> think it
> satisfies a stronger design issue: the primacy of the assertion text.  It
> also provides, to me, a clearer
> conceptual classification of this extra information, and in particular
> allows the properties to have a name (id)
> independent of their location.

Yes, that makes for clear readability too.

> What the properties give is, in effect, a post-schema validation infoset,
> because they link extra information to
> nodes. The big differences between these and the XSD PSVI are 1) there is an
> XML syntax from the word go,
> namely the properties as the come out in the SVRL document, and 2) these
> properties are extensible, while
> the outcomes of XSD validation are fixed.  (Now, actually, it might be
> argued that these properties do nothing
> more than XSD's annotation/* elements do, however, because the properties
> can have dynamic values, I disagree.)

Maybe I'm just nit picking because it's new syntax to me?


Dave Pawson
Docbook FAQ.

More information about the Schematron mailing list