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

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@setzkorn.eu>
CC: xmlschema-dev@w3.org

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

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