W3C home > Mailing lists > Public > xmlschema-dev@w3.org > September 2006

RE: optional textnode in element

From: Christian Setzkorn <christian@setzkorn.eu>
Date: Tue, 19 Sep 2006 14:09:39 +0100
To: "'George Cristian Bina'" <george@oxygenxml.com>
Cc: <xmlschema-dev@w3.org>
Message-ID: <004301c6dbec$dcf36020$a9d5fd8a@Zoonosis1>

Hi George,

Thanks for your reply. I guess this would also work:

<xs:element name="test">
	<xs:complexType> 
		<xs:choice> 
			<xs:element>
				<xs:simpleType> 
					<xs:restriction base="xs:integer"> 
				        	<xs:minInclusive value="1"
/>
				                <xs:maxInclusive value="100"
/> 
				        </xs:restriction> 
            			</xs:simpleType 
			</xs:element>
			<xs:element>
				<xs:simpleType>
           				<xs:restriction base="xs:string">
             					<xs:enumeration value=""/>
           				</xs:restriction>
         		</xs:simpleType>
			</xs:element>
		</xs:choice> 
	</xs:complexType> 	
</xs:element> 
            
BTW is there a difference between Union and Choice? Both correspond to a
logical OR.

Thanks,

Chris

> -----Original Message-----
> From: xmlschema-dev-request@w3.org [mailto:xmlschema-dev-request@w3.org]
> On Behalf Of George Cristian Bina
> Sent: 19 September 2006 13:52
> To: Christian Setzkorn
> Cc: xmlschema-dev@w3.org
> Subject: Re: optional textnode in element
> 
> 
> Hi Chris,
> 
> You can define your element type as a union of integers from one to 100
> and empty string.
> 
> 
>    <xs:element name="test">
>      <xs:simpleType>
>        <xs:union>
>          <xs:simpleType>
>            <xs:restriction base="xs:integer">
>              <xs:minInclusive value="1"/>
>              <xs:maxInclusive value="100"/>
>            </xs:restriction>
>          </xs:simpleType>
>          <xs:simpleType>
>            <xs:restriction base="xs:string">
>              <xs:enumeration value=""/>
>            </xs:restriction>
>          </xs:simpleType>
>        </xs:union>
>      </xs:simpleType>
>    </xs:element>
> 
> Empty values are not nil in XML Schema. To mark a nil value you should
> use xsi:nil=true where xsi is bound to the schema instance namespace
> http://www.w3.org/2001/XMLSchema-instance.
> 
> If you modify the above example to specify that the element is nillable
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
> 
>    <xs:element name="test" nillable="true">
> ...
> 
> then you can have instances like
> 
> nil value:
> 
> <test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:nil="true"/>
> 
> enpty value
> 
> <test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
> 
> integer value
> 
> <test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">10</test>
> 
> You *cannot* have xsi:nil specified and also an integer value like below
> 
> <test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:nil="true">10</test>
> 
> Best Regards,
> George
> ---------------------------------------------------------------------
> George Cristian Bina
> <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
> http://www.oxygenxml.com
> 
> 
> Christian Setzkorn wrote:
> > Hi,
> >
> > How can I define that an elements text node is ‘optional’ for an element
> > like this one:
> >
> > <xs:element>
> >           <xs:simpleType>
> >             <xs:restriction base="xs:integer">
> >               <xs:minInclusive value="1" />
> >               <xs:maxInclusive value="100" />
> >             </xs:restriction>
> >           </xs:simpleType>
> >         </xs:element>
> >
> > So that this:
> >
> > <number>70</number>
> >
> > and this is possible:
> >
> > </number>
> >
> > Any feedback would be very much appreciated. Many thanks.
> >
> > Chris
> >
> > PS: I am also a bit confused about the nil value. Van der Vilst writes
> in
> > his book: “an empty element is not always null, but a null element must
> be
> > empty.” ????
> >
> > Are you aware of articles that may clarify this a bit more? Thanks!
> >
> > BTW: In statistics the whole thing gets even more complicated. I can
> have
> > something like MCAR (missing completely at random), MAR (missing at
> random),
> > MNAR (missing not at random. To model this I would use something like
> this:
> >
> > <?xml version="1.0" encoding="utf-16"?>
> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
> >   <xs:element name="test">
> >     <xs:complexType>
> >       <xs:choice>
> >         <xs:element>
> >           <xs:simpleType>
> >             <xs:restriction base="xs:integer">
> >               <xs:minInclusive value="1" />
> >               <xs:maxInclusive value="100" />
> >             </xs:restriction>
> >           </xs:simpleType>
> > </xs:element>
> > <xs:element>
> > <xs:simpleType>
> > <	xs:restriction base="xs:NMTOKEN">
> > 		<xs:enumeration value=”MCAR”/>
> > <xs:enumeration value=”MAR”/>
> > <xs:enumeration value=”MNAR”/>
> > 			</xs:restriction>
> > </xs:simpleType>
> >         	</xs:element>
> >       </xs:choice>
> >     </xs:complexType>
> >   </xs:element>
> > </xs:schema>
> >
> > What do you think?
> >
> >
> >
> >
> 
> --
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.1.405 / Virus Database: 268.12.5/450 - Release Date: 18/09/2006
> 

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.12.5/450 - Release Date: 18/09/2006
 
Received on Tuesday, 19 September 2006 13:09:54 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:14:55 GMT