[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: [office] RELAX NG vs WXS for mixed content
Sorry for all the delays. It has been a hectic month. I'd still like to do more work on this, but I decided I should just get what I have to the group without further delay. As I find more, I'll post it. Side note: I may not be able to make today's conference call. These notes are all from secondary sources. I am familiar enough with both schema languages to get a basic feel that my findings make sense. The excellent ZVON tutorial pages include a lot of side-by-side comparison of WXS and RNG. http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_simpleContent_st2.html compares mixed content in the form of text and only one element. In brief: Valid document: <AAA> xxx yyy <BBB>ZZZ</BBB> aaa </AAA> WXS: <xsd:element name="AAA"> <xsd:complexType mixed="true"> <xsd:sequence minOccurs="1"> <xsd:element name="BBB" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> RNG: <element name="AAA" xmlns="http://relaxng.org/ns/structure/1.0" > <interleave> <text/> <element name="BBB" ns=""> <text/> </element> </interleave> </element> So far, so similar. The main difference is that, in Eric van der Vlist's words, "[in WXS] you can't ANY constraint on the text nodes in a mixed content model." For more information on this, see Eric's Relax NG, Compared http://www.xml.com/pub/a/2002/01/23/relaxng.html?page=1 which cross-references to Using W3C XML Schema http://www.xml.com/pub/a/2000/11/29/schemas/part1.html?page=1 The key section is Content Types http://www.xml.com/pub/a/2002/01/23/relaxng.html?page=4 from which: """ To define mixed content models you declare both embedded text and elements: <element name="book"> <attribute name="isbn"> <text/> </attribute> <interleave> <element name="title"> <text/> </element> <element name="author"> <text/> </element> <zeroOrMore> <text/> </zeroOrMore> </interleave> </element> Since text nodes are handled like elements and attributes, their individual location and type can be defined and constrained, something which isn't possible with W3C XML Schema. Suppose we have an element p containing lines terminated by empty br elements, and that we want to disallow blank lines. We can write <element name="p"> <zeroOrMore> <text/> <element name="br"> </zeroOrMore> <optional> <text/> </optional> </element> """ As another example of the added expressivity RNG allows, see Modularization of XHTML in RELAX NG http://www.thaiopensource.com/relaxng/xhtml/ where it is pointed out that RELAX NG permits even more expressivity than DTD: "The object and applet modules takes advantage of RELAX NG's absence of restrictions on mixed content to enforce the requirement that params precede other content. The forms module takes advantage of RELAX NG's absence of restrictions on mixed content to enforce the requirement that any legend precedes other content." These features are also not available to WXS. RELAX NG does restrict sequences of content which can match a data type and child element or tex in the same span. See section 7.2 String sequences http://www.oasis-open.org/committees/relax-ng/spec-20011203.html#string-sequenc es for details. Eric van der Vlist has posted objections to this restriction. See discussion throughout this thread http://lists.oasis-open.org/archives/relax-ng/200207/msg00002.html Note that this is a lighter restriction than WXS, which doesn't allow such patterns anyway because it doesn't allow constraints on text nodes in mixed content. General: Some other useful WXS/RNG comparison links: * XML Schema and RELAX NG Element Comparison: http://www.wyeast.net/compare.htm l * Converting RELAX NG to W3C XML Schema: http://www.idealliance.org/papers/xml0 2/dx_xml02/papers/04-01-04/04-01-04.html * James Clark's post "RELAX NG and W3C XML Schema" ( http://www.imc.org/ietf-xml-use/mail-archive/msg00217.html ) has been widely debated. It does not discuss mixed content issues, though. -- Uche Ogbuji Fourthought, Inc. http://uche.ogbuji.net http://4Suite.org http://fourthought.com Python Generators + DOM - http://www.xml.com/pub/a/2003/01/08/py-xml.html 4Suite Repository Features - https://www6.software.ibm.com/reg/devworks/dw-x4su ite5-i/ XML class warfare - http://www.adtmag.com/article.asp?id=6965 MusicBrainz metadata - http://www-106.ibm.com/developerworks/xml/library/x-thi nk14.html
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC