OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] XML Schema Either Text Or Sequence

[ Lists Home | Date Index | Thread Index ]

* Henry S. Thompson <ht@inf.ed.ac.uk> [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@engrm.com




 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS