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

Re: XML schema type question


restriction base anytype
Thanks, Jeni.  This seems a good approach.  Your patient and thoughtful
responses on this list to various practical and theoretical questions are
greatly appreciated

I think one of the reasons this kind of thing is difficult is that there is
only a way to distinguish between the type of an element (including its
attributes and outside-the-angle-brackets content) and the type of the
content alone.  If this were possible, then you would be able to say that in
general, the element foo supported attributes a and b, and allowed anyType
for content, and a particular instance element named foo had content of type
xsd:boolean.  So along with xsi:type it would be nice to have
xsi:content-type.

What I wound up doing is cruder -- I used an no-attribute intermediate
element, as in
  <complexType name="fooType">
    <sequence>
       <element name="value" type="anyType"/>
    </sequence>
    <attribute name="a" ...>
    <attribute name="b" ...>
  </complexType>

  <element name="foo" type="fooType">

and in the instance
   <foo a="x" b="y"><value xsi:type="xsd:boolean">true</value></foo>
   <foo a="xx" b="yy">
       <value xsi:type="someComplexType>
           <someComplexElt>...</someComplexElt>
       </value>
   </foo>

Jeff


----- Original Message -----
From: "Jeni Tennison" <jeni@j...>
To: "Jeff Greif" <jgreif@a...>
Cc: <xml-dev@l...>
Sent: Friday, September 27, 2002 2:11 AM
Subject: Re:  XML schema type question


> Hi Jeff,
>
> > I've seen the XML Schema Type Library's "text" type, supporting
> > arbitrary mixed content. I have been unable to figure out how to
> > define a complex type whose contents are any simple type value or
> > any single element, but not a mixture, where an element of this
> > special type has a certain set of attributes That is, I'm trying to
> > define
> >
> > <element name="foo">
> > <complexType >
> >    ??? some kind of restriction of anyType with either simple or complex
content
> >    <restriction base="anyType">
> >      ???
> >      <attribute name="a" ...>
> >      <attribute name="b" ...>
> >    </restriction>
> >   ???
> > </complexType>
> > </element>
> >
> > so I can say in instance docs
> >
> > <fooList>
> >    <foo a="x" b="y" xsi:type="xsd:boolean">true</foo>
> >    <foo a="xx" b="yy" xsi:type="SomeComplexType">
> >       <someComplexType>...</someComplexType>
> >    </foo>
> >     ...
> > </fooList>
>
> I don't think that you can do precisely what you want, particularly
> because if you do xsi:type="xs:boolean" then you're saying "the foo
> element is (the simple type) xs:boolean", which isn't true because it
> has attributes.
>
> What you can do, I think, is as follows. Start off with a general
> complex type for your element which is *mixed* (allows both text and
> element content) and has the attributes that you want to be common to
> all your foo elements:
>
> <xs:element name="foo" type="_fooType" />
>
> <xs:complexType name="_fooType" abstract="true" mixed="true">
>   <xs:attribute name="a" type="xs:string" />
>   <xs:attribute name="b" type="xs:string" />
> </xs:complexType>
>
> You can then derive, by restriction, from that type in two ways.
> First, you can derive types that have complex content and *aren't*
> mixed (don't have textual content):
>
> <xs:complexType name="_fooComplexContentType" abstract="true">
>   <xs:complexContent>
>     <xs:restriction base="_fooType" />
>   </xs:complexContent>
> </xs:complexType>
>
> Second, you can derive types that have simple content of a type of
> your choice:
>
> <xs:complexType name="_fooSimpleContentType" abstract="true">
>   <xs:simpleContent>
>     <xs:restriction base="_fooType">
>       <xs:simpleType>
>         <xs:restriction base="_fooSimpleType" />
>       </xs:simpleType>
>     </xs:restriction>
>   </xs:simpleContent>
> </xs:complexType>
>
> <xs:simpleType name="_fooSimpleType">
>   ...
> </xs:simpleType>
>
> Finally, you can derive the concrete types that you want to use in
> your instance from these types, by extension (to add element content
> to the empty _fooComplexContentType) or restriction (to specify the
> allowed values of the _fooSimpleType).
>
> (It's *so* much easier in RELAX NG...)
>
> Cheers,
>
> Jeni
>
> ---
> Jeni Tennison
> http://www.jenitennison.com/
>
>
> -----------------------------------------------------------------
> 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>
>
>
>


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.