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

Re: Same element, different type

  • From: George Cristian Bina <george@o...>
  • To: Keith Hassen <keith.hassen@g...>
  • Date: Thu, 29 Jan 2009 21:58:47 +0200

Re:  Same element
Hi Keith,

If you validate that in oXygen it will also quote you in the error 
report the following link from the spec:
http://www.w3.org/TR/xmlschema-1/#cos-element-consistent

One thing that may get you closer to what you want is to use xsi:type on 
the first parameter to specify a restricted type, but that needs to be 
placed in the instance, like below

<params xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <param xsi:type="p1">a</param>
     <param>x</param>
</params>

with a schema like

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
     <xs:element name="params">
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="2" maxOccurs="2" name="param" 
type="xs:string"/>
             </xs:sequence>
         </xs:complexType>
     </xs:element>
     <xs:simpleType name="p1">
         <xs:restriction base="xs:string">
             <xs:enumeration value="a"/>
             <xs:enumeration value="b"/>
             <xs:enumeration value="c"/>
         </xs:restriction>
     </xs:simpleType>
</xs:schema>

One possibility is to embed Schematron in your schema, below you can 
find a working sample:

<xs:element name="params">
     <xs:annotation>
         <xs:appinfo>
             <sch:pattern name="Test the first parameter"
                 xmlns:sch="http://purl.oclc.org/dsdl/schematron">
                 <sch:rule context="params">
                     <sch:assert test="param[1]='a' or param[1]='b' or 
param[1]='c'">
                         The first param must be a, b or c
                     </sch:assert>
                 </sch:rule>
             </sch:pattern>
         </xs:appinfo>
     </xs:annotation>
     <xs:complexType>
         <xs:sequence>
             <xs:element minOccurs="2" maxOccurs="2" name="param" 
type="xs:string"/>
         </xs:sequence>
     </xs:complexType>
</xs:element>

Best Regards,
George
--
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com


Keith Hassen wrote:
> Hi,
> 
> I have what I suspect is a simple question about element consistency in 
> a schema.  I have recently run across a few scenarios that require me to 
> define something like the following:
> 
>   <xs:element name="params">
>     <xs:complexType>
>       <xs:sequence>
>         <xs:element minOccurs="1" maxOccurs="1" name="param">
>           <xs:simpleType>
>             <xs:restriction base="xs:string">
>               <xs:enumeration value="a"/>
>               <xs:enumeration value="b"/>
>               <xs:enumeration value="c"/>
>             </xs:restriction>
>           </xs:simpleType>
>         </xs:element>
>         <xs:element minOccurs="1" maxOccurs="1" name="param" 
> type="xs:string"/>
>       </xs:sequence>
>     </xs:complexType>
>   </xs:element>
> 
> The definition above isn't ambiguous (which would break the unique 
> particle attribution rule), but it is not *consistent* vis-a-vis the 
> types.  The Xerces parser reports a "cos-element-consistent" error, 
> which I understand, but which I am hoping to circumvent while 
> maintaining strict parsing rules.
> 
> Is there a way to define two unambiguous elements with the same name but 
> are of different types?  I believe the answer here is "it can't be 
> done", but thought I'd throw this at the wolves to see if I'm right. :)
> 
> (Incidentally, the above example is a snippet from a schema that is 
> attempting a representation of an XML-RPC message set, where the first 
> parameter is always a constrained list of possible values, while the 
> second parameter is any string).
> 
> -K
> 
> _______________________________________________________________________
> 
> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
> to support XML implementation and development. To minimize
> spam in the archives, you must subscribe before posting.
> 
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: xml-dev-unsubscribe@l...
> subscribe: xml-dev-subscribe@l...
> List archive: http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
> 


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


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-2007 All Rights Reserved.