Eddie Robertsson wrote:

> Hi Sean,
>
> > Hi, Eddie,
> >
> > Thanks for your suggestion.  Do you know if Xerces 1.4 supports Schematron
> > embedded in W3C schema?
>
> No, unfortuantely not. As of today it's only the Schematron Validator that
> supports these kinds of embedded Schematron rules. However, you can implement
> this yourself by including Xalan (the XSLT package from Xerces) in your
> application. The basic idea is to include a couple of XSLT transformations in
> your processing chain. First you extract the embedded Schematron rules using 
> the
> XSD2Schtrn.xsl [1] stylesheet and then you use that result to validate with 
> the
> Schematron stylesheets.
> I have a paper in the finishing stages that will give examples and explain the
> validation process in detail.

I'm currently working on a paper that will explain the details of embedding
Schematron rules in the <xs:appinfo> element in a W3C XML Schema. I've put up a
draft at [1] which contains some background, introduction to Schematron, 
examples of
embedded Schematron rules and how the validation process works. The draft also
contains a link to a zip file with all the examples used so you can try it out
yourself.

All comments are welcome.

Cheers,
/Eddie

[1] http://www.topologi.com/public/Schtrn_XSD/Paper.html

> Cheers,
> /Eddie
>
> [1] http://www.topologi.com/public/Schtrn_XSD/XSD2Schtrn.zip
>
> >
> >
> > Sean
> >
> >                 -----Original Message-----
> >                 From:   Eddie Robertsson [mailto:[EMAIL PROTECTED]
> >                 Sent:   Tuesday, February 05, 2002 6:07 PM
> >                 To:     Sean Zhang
> >                 Cc:     [EMAIL PROTECTED]
> >                 Subject:        Re: [xml-dev] Using <choice> to enforce
> > rules
> >
> >                 Hi Sean,
> >
> >                 > I try to use W3C schema to enforce a business rule so that
> > only one of the
> >                 > two attributes can have blank value.
> >                 >
> >                 > My schema structure is one attribute group with two
> > attributes which
> >                 > requires value, one attribute group with two attributes
> > which only first
> >                 > attribute requires value and one attribute group with same
> > two attributes
> >                 > which only second attribute requires value.  Then I have
> > two groups (element
> >                 > groups), first group have the first and second attribute
> > groups and second
> >                 > group have first and third attribute group.  Last I create
> > the element which
> >                 > uses a <choice> with reference to the two element groups.
> > The schema and an
> >                 > instance document are below.
> >                 >
> >                 > I created it in XML Spy 4 and it works as expected.  But
> > when I use Java
> >                 > with Xerces 1.4 deployed on Weblogic, it always validates
> > against the first
> >                 > item in the <choice>.
> >
> >                 > Can anyone see any problems in my schema design?
> >
> >                 Yes. I think XML Spy is wrong here because you the model you
> > have created is
> >                 ambigous. The parser won't know which of the elementA
> > elements it's parsing. I
> >                 think this also violates the constraint the in the same
> > model group you can't
> >                 have two element declarations with the same name but
> > different types.
> >
> >                 Unfortunately W3C XML Schema isn't very good at defining
> > co-occurence
> >                 constraints like this but RELAX-NG and Schematron can do
> > this or you can choose
> >                 to embedd some Schematron rules within your XML Schema to
> > enforce the extra
> >                 constraints. See [1] for an example of how a Schematron rule
> > can be embedded
> >                 within a W3C XML Schema.
> >
> >                 Cheers,
> >                 /Eddie
> >
> >                 [1]
> > http://lists.w3.org/Archives/Public/xmlschema-dev/2001Nov/0049.html
> >
> >                 >
> >                 >
> >                 > Thanks a lot,
> >                 >
> >                 > Sean
> >                 >
> >                 > <?xml version="1.0" encoding="UTF-8"?>
> >                 > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
> >                 > elementFormDefault="qualified"
> > attributeFormDefault="unqualified">
> >                 >         <xs:attributeGroup name="AttGroupA">
> >                 >                 <xs:attribute name="AA">
> >                 >                         <xs:simpleType>
> >                 >                                 <xs:restriction
> > base="xs:string">
> >                 >                                         <xs:minLength
> > value="1"/>
> >                 >                                 </xs:restriction>
> >                 >                         </xs:simpleType>
> >                 >                 </xs:attribute>
> >                 >                 <xs:attribute name="BB">
> >                 >                         <xs:simpleType>
> >                 >                                 <xs:restriction
> > base="xs:string">
> >                 >                                         <xs:minLength
> > value="1"/>
> >                 >                                 </xs:restriction>
> >                 >                         </xs:simpleType>
> >                 >                 </xs:attribute>
> >                 >         </xs:attributeGroup>
> >                 >         <xs:attributeGroup name="AttGroupB">
> >                 >                 <xs:attribute name="CC">
> >                 >                         <xs:simpleType name="">
> >                 >                                 <xs:restriction
> > base="xs:string">
> >                 >                                         <xs:maxLength
> > value="40"/>
> >                 >                                 </xs:restriction>
> >                 >                         </xs:simpleType>
> >                 >                 </xs:attribute>
> >                 >                 <xs:attribute name="DD">
> >                 >                         <xs:simpleType name="">
> >                 >                                 <xs:restriction
> > base="xs:string">
> >                 >                                         <xs:minLength
> > value="1"/>
> >                 >                                         <xs:maxLength
> > value="40"/>
> >                 >                                 </xs:restriction>
> >                 >                         </xs:simpleType>
> >                 >                 </xs:attribute>
> >                 >         </xs:attributeGroup>
> >                 >         <xs:attributeGroup name="AttGroupC">
> >                 >                 <xs:attribute name="CC">
> >                 >                         <xs:simpleType name="">
> >                 >                                 <xs:restriction
> > base="xs:string">
> >                 >                                         <xs:minLength
> > value="1"/>
> >                 >                                         <xs:maxLength
> > value="40"/>
> >                 >                                 </xs:restriction>
> >                 >                         </xs:simpleType>
> >                 >                 </xs:attribute>
> >                 >                 <xs:attribute name="DD">
> >                 >                         <xs:simpleType name="">
> >                 >                                 <xs:restriction
> > base="xs:string">
> >                 >
> >                 >                                         <xs:maxLength
> > value="40"/>
> >                 >                                 </xs:restriction>
> >                 >                         </xs:simpleType>
> >                 >                 </xs:attribute>
> >                 >         </xs:attributeGroup>
> >                 >         <xs:group name="ElementGroupA">
> >                 >                 <xs:sequence>
> >                 >                         <xs:element name="ElementA">
> >                 >                                 <xs:complexType name="">
> >                 >
> >                 >                                         <xs:attributeGroup
> > ref="AttGroupA"/>
> >                 >                                         <xs:attributeGroup
> > ref="AttGroupB"/>
> >                 >                                 </xs:complexType>
> >                 >                         </xs:element>
> >                 >                 </xs:sequence>
> >                 >         </xs:group>
> >                 >         <xs:group name="ElementGroupB">
> >                 >                 <xs:sequence>
> >                 >                         <xs:element name="ElementA">
> >                 >                                 <xs:complexType name="">
> >                 >
> >                 >                                         <xs:attributeGroup
> > ref="AttGroupA"/>
> >                 >                                         <xs:attributeGroup
> > ref="AttGroupC"/>
> >                 >                                 </xs:complexType>
> >                 >                         </xs:element>
> >                 >                 </xs:sequence>
> >                 >         </xs:group>
> >                 >         <xs:element name="TEST">
> >                 >                 <xs:complexType>
> >                 >                         <xs:choice>
> >                 >                                 <xs:group
> > ref="ElementGroupA"/>
> >                 >                                 <xs:group
> > ref="ElementGroupB"/>
> >                 >                         </xs:choice>
> >                 >                 </xs:complexType>
> >                 >         </xs:element>
> >                 > </xs:schema>
> >                 >
> >                 > <?xml version="1.0" encoding="UTF-8"?>
> >                 > <TEST
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> >                 > xsi:noNamespaceSchemaLocation="D:\Test.xsd">
> >                 >         <ElementA AA="A" BB="B" CC="" DD=""/>
> >                 > </TEST>
> >                 >
> >                 >
> > -----------------------------------------------------------------
> >                 > 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>
> >
> >
> > -----------------------------------------------------------------
> >                 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>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to