[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Is Schematron (using XPath 2.0) functionally a superset of

  • From: "Costello, Roger L." <costello@m...>
  • To: <xml-dev@l...>
  • Date: Sun, 11 Nov 2007 09:49:24 -0500

RE:  Is Schematron (using XPath 2.0) functionally a superset of
> Since one of the major goals and benefits of Schematron 
> is good diagnostics, reducing a content model to a regular 
> expression doesn't seem a particularly smart idea.

The example below shows Schematron expressing data requirements in a
much more elegant and natural fashion than XML Schemas.

EXAMPLE

Here is a simple XML document:

<?xml version="1.0" encoding="UTF-8"?>
<latitude>74.231455</latitude>

DATA REQUIREMENTS

Here are the data requirements on the value of the <latitude> element:

1. The value must be a decimal value.
2. The value must be between -90 and +90.
3. There must be six digits to the right of the decimal point.

ANALYSIS OF IMPLEMENTATIONS

Below I show how the above data requirements are implemented using XML
Schemas.  Then I show how they are implemented using Schematron.

ANALYSIS OF THE XML SCHEMA IMPLEMENTATION

If you examine the XML Schema implementation you will see that it
expresses this: "The latitude is a string.  And the string is
constrained by the given regular expression."   However, the above data
requirements clearly says that the latitude value is a decimal value,
not a string value.  This results in great confusion.  Accrediting the
XML Schema implementation against the data requirements will be very
difficult as the peculiarities of XML Schemas must be translated into
the data requirements. 

The requirement that the value must be between -90 and +90 is hidden
within a very complex regular expression. Ditto for the requirement
that there must be six digits to the right of the decimal point.
Again, accreditation will be a nightmare.

Conclusion: The capabilities of XML Schema provide a poor way of
expressing the above data requirements. 

ANALYSIS OF THE SCHEMATRON IMPLEMENTATION

Schematron has an assertion that addresses each of the three data
requirements.  

The first assertion expresses the first data requirement in a clear and
natural fashion: 

    ". castable as xs:decimal"

The second assertion expresses the second data requirement in a clear
and natural fashion: 

    "(xs:decimal(.) ge -90.0) and (xs:decimal(.) le +90.0)"

And the third assertion expresses the third data requirement in a clear
and natural fashion: 

    "matches(., '^[0-9]*\.[0-9]{6}$')"

In addition, each assertion identifies the data requirement that it is
implementing, using the see="..." attribute).  This is very important
for accrediting a schema against its data requirements.

Lastly, each assertion has an associated human-readable diagnostic.

CONCLUSION

For this example, Schematron is superior to XML Schemas in these
respects:
- expressibility
- accreditabiliy
- human-readable error messages


EXPRESSING THE DATA REQUIREMENTS USING XML SCHEMA

The above data requirements can be expressed by XML Schemas as follows:

<element name="latitude">
    <simpleType>
        <restriction base="string">
            <pattern
value="[0-9]\.[0-9]{6}|[1-8][0-9]\.[0-9]{6}|90\.[0-9]{6}|-[0-9]\.[0-9]{
6}|-[1-8][0-9]\.[0-9]{6}|-90\.[0-9]{6}"/>
        </restriction>
    </simpleType>
</element>


EXPRESSING THE DATA REQUIREMENTS USING SCHEMATRON

   <sch:pattern id="Latitude_Validation">

      <sch:rule context="latitude">

         <sch:assert test=". castable as xs:decimal"
                     diagnostics="Decimal"
                     see="Data Requirement #1">
             The latitude must be a decimal value.
         </sch:assert>

         <sch:assert test="(xs:decimal(.) ge -90.0) and (xs:decimal(.)
le +90.0)"
                     diagnostics="Range"
                     see="Data Requirement #2">
             The latitude must be between -90 and +90.
         </sch:assert>

         <sch:assert test="matches(., '^[0-9]*\.[0-9]{6}$')"
                     diagnostics="Precision"
                     see="Data Requirement #3">
             The latitude must have six digits to the right of the
decimal point.
         </sch:assert>

      </sch:rule>

   </sch:pattern>

   <sch:diagnostics> 

      <sch:diagnostic id="Decimal">

         Your latitude value has an improper datatype.  
         Data requirement #1 says that the latitude must
         be a decimal value.

      </sch:diagnostic>

      <sch:diagnostic id="Range">

         Your latitude value has an improper value.  
         Data requirement #2 says that the latitude must
         be between -90 and +90.

      </sch:diagnostic>

      <sch:diagnostic id="Precision">

         Your latitude value does not have the correct precision.  
         Data requirement #3 says that the latitude must
         have six digits to the right of the decimal point.

      </sch:diagnostic>

   </sch:diagnostics>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.