Validation using schematron?

Discussion in 'XML' started by Marco Cyriacks, May 7, 2010.

  1. -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Dear all,

    within a C++ application I use xerces-c to validate XML instances
    against a XML schema. This works very fine for me but currently I try to
    realise the validation of some inner restricting for those XML
    instances. Some examples:


    1. If element 'PluginDescription' has the optional attribute 'attrPD'
    and this attribute is true, the child element 'Resources' has to have
    exactly one child element 'Resource' with an attribute 'attrR="AAA"'
    (check against existence and value of that attribute).

    <PluginDescription attrPD="true">
    <Resources>
    <Resource attrR="AAA"/>
    </Resources>
    </PluginDescription>


    2. If element 'PluginDescription' does not have the optional attribute
    'attrPD' or this attribute is false, the contents and number of child
    elements for 'Resources' is arbitrarily.

    <PluginDescription attrPD="false">
    <Resources>
    <Resource attrR="AAA"/>
    <Resource attrR="BBB"/>
    </Resources>
    </PluginDescription>

    <PluginDescription>
    <Resources>
    <Resource attrR="AAA"/>
    </Resources>
    </PluginDescription>

    <PluginDescription>
    <Resources>
    </Resources>
    </PluginDescription>


    Is it possible to validate a XML instance against these restrictions? If
    I'm right, it is not possible to do this using XML schema.

    My ideas on it:

    - - Implementation of the validation against those restrictions in my
    application using C++ and xerces-c

    This might by the easiest solution but will force application change
    and recompilation if the restrictions change.

    - - Creation of schematron

    During a web research I found informations on XML schematron.
    Unfortunately my first trials on that failed. Is it possible to validate
    my XML instances against the presented restrictions using schematron?


    Any help would be appreciated!


    Best regards,
    Marco
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.10 (GNU/Linux)
    Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

    iQEcBAEBAgAGBQJL4+apAAoJEH1rHVTBeH9oYGcH/jbmoVp/rVN597msIuFSjFiJ
    6TSgictCzEm0M9Bb9pytmPhXHV20XH8i9SkzZSTzSk+nkZTqCxLyBoOyAFOITAbT
    k1fktn2UYMtlFKNg8Z8hgdk2CiAVDR0qIVr6rzJ3xpcXndrLdagSo4nsnC5YAVV6
    aMCBhv8hGcSz23p6K02c0TddpqLv7VO1cQRPXNkKVESXSiCJ5n/3Lx1kzZP6Z9BS
    oEJ6o+vB933jkcoyuKUAwhaGp81G0DOCX7s5wJ0HT6EufCqtdumRsZB7sRWYucBC
    HXbc3bRWAxEfDstNrtPkJFRwFK6Xc4eEmGb0kEMORY8fy5ttqigpTHOb7S3p6cc=
    =gBop
    -----END PGP SIGNATURE-----
    Marco Cyriacks, May 7, 2010
    #1
    1. Advertising

  2. Hello Marco,

    Marco Cyriacks <> writes:

    > Is it possible to validate a XML instance against these restrictions? If
    > I'm right, it is not possible to do this using XML schema.


    Yes, no co-constraints can be implemented in XML Schema 1.0. You may
    have a look at XML Schema 1.1, it is enhanced with schematron-like
    asssertions.

    > - Creation of schematron
    >
    > During a web research I found informations on XML schematron.
    > Unfortunately my first trials on that failed.


    Sorry, I can't help with the current files. My Saxon isn't that new.

    I use a slightly older version of the public XSLT scripts (by December
    15th, 2009) that work out of the box.

    You could post your Schematron file and the according XML file in order
    to check the syntax.

    > Is it possible to validate my XML instances against the presented
    > restrictions using schematron?


    Of course, your constraints are a nice task for Schematron.

    read you ...
    Susanne
    Susanne Wunsch, May 7, 2010
    #2
    1. Advertising

  3. -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Hi Susanne,

    thanks for your reply!


    > Yes, no co-constraints can be implemented in XML Schema 1.0. You may
    > have a look at XML Schema 1.1, it is enhanced with schematron-like
    > asssertions.


    I did a short web search on that but I think that Xerces-C (the XML
    parser I use) is not yet able to handle XML schema 1.1, at least the
    version of xerces-c that is distributed with my operating system
    (xerces-c-2.8.0).


    > Sorry, I can't help with the current files. My Saxon isn't that new.


    Currently and only for testing I use xsltproc
    (http://xmlsoft.org/XSLT/xsltproc2.html) that is only able to handle
    XSLT 1.0 therefore I took the reference implementation of schematron from

    http://www.schematron.com/tmp/iso-schematron-xslt1.zip

    This might be the same you use...?


    > You could post your Schematron file and the according XML file in order
    > to check the syntax.


    Obviously I had some syntax problems in my quick'n'dirty schematron.
    This afternoon I tried to check the example on

    http://www.zvon.org/xxl/SchematronTutorial/Examples/Example1/example.html

    I was able to validate that example using the following script:

    - ------------------------------------------------------
    #!/bin/bash

    echo Step1 ...
    xsltproc iso_dsdl_include.xsl $1 > step1.xsl

    echo Step2 ...
    xsltproc iso_abstract_expand.xsl step1.xsl > step2.xsl

    echo Step3 ...
    xsltproc iso_svrl_for_xslt1.xsl step2.xsl > step3.xsl

    echo Validation ...
    xsltproc step3.xsl $2 > result.svrl
    - ------------------------------------------------------

    Everything went fine and I got the expected result.

    Now I have to figure out how to create the correct schematron for my
    problem... ok, there are still some hours left today :)


    Best regards,
    Marco
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.10 (GNU/Linux)
    Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

    iQEcBAEBAgAGBQJL5ENsAAoJEH1rHVTBeH9oIyMH/RdgWi0hJKM1xZwSMKgrpkKt
    DcvJ1ul9yOku5o0k6zA2ivNMmnYngyHhwHfmjyB+eQDzbBUQpnJ8EFy1ahGHKu59
    aU77AfpzazQQQT+eEt7x70q+esHPyqkR53y9mR0CKsL39CMtUGNxDWZTum+a+CSW
    jaQHFtu1nAm8aBkDn6G+st+kiJTn2b6qqFTM745h3xoKp+KYZs76lzNEEb/lcMpG
    rxmiJx+tAbOZdnNiy9RntbVXf19Zt0mFWd9PU+B54P5zEds1XkJWI9NCEo0s0Vs9
    zVa03ub9SPUW8iwmCd5Gkh2BnElAyjqd5xF/ZV9AJNCyOy2mGEnvuVLS2NkG5j4=
    =TPzw
    -----END PGP SIGNATURE-----
    Marco Cyriacks, May 7, 2010
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. gabriel
    Replies:
    3
    Views:
    1,526
    Colin Mackenzie
    Jun 25, 2003
  2. disteve

    Schematron question

    disteve, Apr 27, 2005, in forum: XML
    Replies:
    0
    Views:
    424
    disteve
    Apr 27, 2005
  3. paul.hermans
    Replies:
    0
    Views:
    340
    paul.hermans
    May 1, 2005
  4. Steve Jorgensen
    Replies:
    0
    Views:
    523
    Steve Jorgensen
    Jul 27, 2005
  5. Lord0
    Replies:
    0
    Views:
    627
    Lord0
    Oct 19, 2006
Loading...

Share This Page