OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] Specifying formal semantics in XML languages

[ Lists Home | Date Index | Thread Index ]

[Resend due to finger trouble, with additions]
There are indeed many useful kinds of schema languages that don't have 
widespread currency yet.

In some of my company's products we use our own little schema language 
that says

* what elements are allowed or required
* what attributes are allowed or required
* what elements are only every found in first or last position

We also have "usage schemas" which sample documents and generate all the 
possible grandparent/parent/child paths in the document, and checks 
other documents against these.

Checking lists of tokens is indeed a very problematic area for 
Schematron using the default XSLT 1 implementations.

ISO DSDL was created to give a home and official status to these kind of 
little languages. If anyone can come up with a technically excellent and 
implemented little schema language that helps validate some significant 
kinds of markup idioms that XSD or the other ISO DSDL schema languages 
do not cover well (as is *entirely* possible), I am certain the ISO SC34 
WG1 group would be interested in considering it for standardization, in 
typically unpanicked fashion.

To be honest, I suspect that Schematron with a particular extension 
could pretty much do what Peter requires. In particular, ISO Schematron 
has a macro facility called abstract patterns that allow you to be much 
more declarative in labelling the participants in a schema relationship: 
you could have one like

<sch:pattern name="required-child" abstract="true">
   <sch:rule context="$parent">
     <sch:assert test="$child">The parent should have a child</sch:assert>
  </sch:rule>
</sch:pattern>

where the $ tokens are macro arguments that are replaced by their 
invocation to give conventional Schematron schemas

 <sch:pattern name="eg"  is-a="required-child">
     <sch:param name="parent" value="Angela"/>
    <sch:param name="child" value="Suhai"/>
    <sch:param name="position" value="1" />
 </sch:pattern>

What this gives is enough markup that  a custom processor can take the 
schema and
generate  code based on it. For example, to append a Suhai element to 
the Angela
element in the first position. In fact, you might even decide not to 
ever validate using the Schematron schema per se, (use it as 
documentation) but to drive your superduper custom processor with the 
information specified using abstract patterns!

Abstract patterns represent, I hope, a significant advance in home-made 
schema languages, because not only do you get the background boring 
power of XPath validation, but you also get the extra labelling required 
to enable identification of the parts of constraints and assertion  
tests. And that identification opens the door for re-targetting the 
schema for purposes such as code generation or any kind of useful 
purpose. XPaths are great because they are terse; abstract patterns 
overcome the concomitant lack of declative expressiveness.

Cheers
Rick

>





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS