Re: Same Element Different Attributes

At 2002-10-02 13:08, brian@creativengine.com wrote:

>I am trying to write a schema for an application we developed. It sends
>xml "requests" to a server and receives xml "replies". Im new to schema
>development
>and i am having trouble figuring out the best way to organize it...the
>problem is, each request is a separate
>xml file i.e.
><REQUEST TYPE="GETDOCUMENT" UNID="1234556664325345"/>
>
><REQUEST TYPE="GETVIEW" UNID="1234556664325345" VIEWNAME="ALL"/>
>
><REQUEST TYPE="GETSUBSET" UNID="1234556664325345" VIEWNAME="ALL">
>      <DOCUMENT UNID="555555555"/>
>      <DOCUMENT UNID="555555556"/>
><REQUEST/>
>
>
>Basically the root element is always "REQUEST" but the attributes change.

Is there a reason you cannot allow the root element to
have different names for different request types?  E.g.

   <GETDOCUMENT UNID="..."/>
   <GETVIEW UNID="..." VIEWNAME="..."/>
   <GETSUBSET UNID="..." VIEWNAME="...">
      <DOCUMENT UNID="..."/>
   <REQUEST/>

?  That would allow the schema to validate the selection of
attributes for each element in a simple and straightforward
way.  For my way of thinking, it also makes the application
easier to understand, but it's clear that different people
think differently about this.

If you really really need them all to be called REQUEST, you
could define an abstract complex type for all requests, derive
other types from it, with appropriate additions to the set of
attributes, or by setting optional attributes to have
maxOccurs of 0, and then use xsi:type to tell the processor
which kind of request you want.  The complex types you
derive from your abstract request type might be called
GETDOCUMENT, GETVIEW, GETSUBSET, and so on. Your examples then
become:

<REQUEST xsi:type="GETDOCUMENT" UNID="1234556664325345"/>

<REQUEST xsi:type="GETVIEW" UNID="1234556664325345" VIEWNAME="ALL"/>

<REQUEST xsi:type="GETSUBSET" UNID="1234556664325345" VIEWNAME="ALL">
      <DOCUMENT UNID="555555555"/>
      <DOCUMENT UNID="555555556"/>

<REQUEST/>

I hope this helps.

-C. M. Sperberg-McQueen

Received on Wednesday, 2 October 2002 22:28:36 UTC