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

Re: XML Schema Either Text Or Sequence


xml schema either or
* Henry S. Thompson <ht@i...> [2004-12-20 01:43]:
> >    I'd like to assert that the element set either contains a simple
> >    type or more set elements.

> As specified, your requirement cannot be met by W3C XML Schema.

> I'm tempted to say that this looks like questionable markup design,
> since all the structural information which would allow validation
> and/or type assignment to do any useful work is 'hidden' in
> attributes, and to wonder why you don't say

>  <phone>
>   <type>work</type>
>   <number>555-1212</number>
>  </phone>

> but I won't, because I don't know what other constraints you are
> trying to satisfy. . .

    Design wasn't right. I created a separate element and called it
    put. Sounds chintzy, but...
    
    I'm not trying to model an address book, but a generic Java
    object configuration script.

    Such that this.

    new Boolean("true")

    Via this.

    <construct type="java.lang.Boolean">
      <property name="value" type="java.lang.String"/>
    </construct>

    Can be expressed like this.

    <set name="value">true</set>

    So to construct a HashMap of URIs and pass it to a setter method
    that accepts a Map this is specified in a configuration:

    <setter name="locations" method="setLocations">
      <construct type="java.util.HashMap">
        <putter name="location" method="put">
          <property name="key" type="java.lang.String"/>
          <construct type="java.net.URI">
            <property name="uri" type="java.lang.String"/>
          </property>
        </putter>
      </construct>
    </setter>

    So that the end user can express this more concisely.

    <set name="locations">
      <put name="location">
        <set name="key">alan</set>
        <set name="uri">http://engrm.com/</set>
      </put>
      <put name="location">
        <set name="key">henry</set>
        <set name="uri">http://www.ltg.ed.ac.uk/~ht/</set>
      </put>
    </set>

    And there's my "put" which is a different beast from "set", and
    can be expressed as XML Schema.

    This is so that I can create an Ant type confguration file that
    can be validated using XML Schema.

    At first I pursused the Ant style, where element and attribute
    names mapped to Java method names, but it started to infect the
    Java with a lot of akward setter methods.

    This is a bit harder to read, but it can be validated, and
    existing objects can be used in configuration, without a need to
    create special setter methods, special nested static classes,
    and all those other Ant tricks.

    Jetty has a similar concept, but I wanted to type something
    where the verbose expression of constructor and methods calls
    could be expressed once and reused.

    Implementing the above as two separate SAX engines, a compiler
    and an intperter, and attempting to develop ridgid XML Schemas
    for both.

    Thoughts?

--
Alan Gutierrez - alan@e...

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.