Re: Sometimes an empty value means "use the default value" and sometimes it doesn't ... right?

It's always seemed a shame to me that <Title></Title> and <Title/> are 
semantically equivalent.  In this case it would be handy if <Title></Title> 
meant the empty string and <Title/> meant the default.  But it's history 
that that ship has sailed through the water under the bridge!

Pete Cordell
Codalogic Ltd
Twitter: http://twitter.com/petecordell
Interface XML to C++ the easy way using C++ XML
data binding to convert XSD schemas to C++ classes.
Visit http://codalogic.com/lmx/ or http://www.xml2cpp.com
for more info
----- Original Message ----- 
From: "Costello, Roger L." <costello@mitre.org>
To: <xmlschema-dev@w3.org>
Sent: Thursday, August 23, 2012 8:04 PM
Subject: Sometimes an empty value means "use the default value" and 
sometimes it doesn't ... right?


Hi Folks,

Here is a schema that has an Altitude element with a default value of 100, 
and a Title element with a default value of "Hello World"

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="Tests">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Test1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Altitude" type="xs:integer" 
default="100" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Test2">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Title" type="xs:string" 
default="Hello World" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>

Here is an instance document that has an empty value for both Altitude and 
Title

<?xml version="1.0" encoding="UTF-8"?>
<Tests>
    <Test1>
        <Altitude></Altitude>
    </Test1>
    <Test2>
        <Title></Title>
    </Test2>
</Tests>

Since the empty value is not a valid integer, the Altitude element must 
assume the default value, 100.

Since the empty value is a valid string, the Title element does not assume 
the default value; its value is the empty string.

Thus sometimes an empty value means "use the default value" and sometimes it 
doesn't.  Right?

/Roger

Received on Thursday, 23 August 2012 21:47:05 UTC