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

Re: optional textnode in element

From: George Cristian Bina <george@oxygenxml.com>
Date: Tue, 19 Sep 2006 15:52:18 +0300
Message-ID: <450FE802.5020203@oxygenxml.com>
To: Christian Setzkorn <christian@s...>
CC: xmlschema-dev@w3.org
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?
> 
> 
> 
> 
Received on Tuesday, 19 September 2006 12:49:25 GMT

Subscribe to the Stylus Scoop newsletter for helpful XML tips and tutorials.
Email
First Name
Last Name
Company

Download Stylus Studio 6 XML Enterprise Edition

Subscribe in XML format
RSS 2.0
Atom 0.3
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.