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 16:44:48 +0300
Message-ID: <450FF450.4080408@oxygenxml.com>
To: Christian Setzkorn <christian@setzkorn.eu>
CC: xmlschema-dev@w3.org

No, that will not work, you cannot define anonymous elements (elements 
without a name). Even if you provide a name for the element then you 
cannot have the same element inside the same content model with 
different definitions.
Union makes a choice inside a simple type while the choice particle 
defines what elements go inside another element.

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


Christian Setzkorn wrote:
> 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
>>
> 
Received on Tuesday, 19 September 2006 13:41:58 GMT

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