- From: Steven Pemberton <steven.pemberton@cwi.nl>
- Date: Tue, 02 May 2006 16:25:50 +0200
- To: "Klotz, Leigh" <Leigh.Klotz@pahv.xerox.com>, "'www-forms-editor@w3.org'" <www-forms-editor@w3.org>
Leigh, Thank you for your comment. The XForms WG discussed this issue[1] and resolved that the problem lay with the description of how types are bound to the data in XForms. They resolved to: "Issue an erratum for 6.1.1 Type property about how the type is bound to the data. It mustn't be done by equivalency to xsi:type attribute." If this reply satisfies your comment, please reply to this mail to that effect. Many thanks, Steven Pemberton For the XForms WG [1] http://www.w3.org/2006/03/23-xforms-minutes#item02 On Tue, 31 Aug 2004 23:23:56 +0200, Klotz, Leigh <Leigh.Klotz@pahv.xerox.com> wrote: > > > In "3 Conformance", the XForms 1.0 Basic Profile CR [1] says > XForms Basic Profile processors may implement a subset of an XML Schema > processor > [XML Schema part 1], [XML Schema part 2], requiring only what is > necessary > to process > the attribute xsi:type on instance data for simpleTypes only and the > type > model > item property for simpleTypes only. > > In "3.3.1 The model Element", the XForms 1.0 REC [2] says > Optional list of xsd:anyURI links to XML Schema documents outside this > model element. > The XForms Processor must process all Schemas listed in this attribute. > > My understanding is that the Basic Profile changes this "must" to either > a > "must not" or perhaps a "should not" for XForms Basic. > In any case, I assume that the schema attribute (and similarly, the > embedded > xsd:schema element) are allowed in documents processed by an XForms Basic > processor, but are to be ignored. > > Now, consider the following case where an instance contains an element > with > a simple value (such as a decimal or a time) and a boolean attribute: > > <time precise="true">06:00:00</time> > > The goal of adding an attribute to an element of simple type content is > common, and in fact the first qustion in a popular XML Schema FAQ [3] > shows > that it is in fact, a frequently-asked question. The cited FAQ then > gives a > complexType definition extending a simple type and adding an attribute. > > Here is a complete XForms Full example, using XML Schema, a sample > instance > document, and an XHTML 1 document with XForms controls, using the XML > Schema. It relies on the XML Schema referred to from the model to define > the type of the attribute as boolean, so that the XForms Processor may > display it as a checkbox. > > XForms Basic does not interpret the schema attribute, but it does > "process > ... type model item property for simpleTypes only" so we can add > <xf:bind ref="my:length/@my:precise" type="xsd:boolean" /> > to the model, and both Full and Basic XForms Processors will display the > attribute as a boolean (for example, as a checkbox in a graphical user > interface). > > Note that the base type of the element, xsd:time, is also one that XForms > processors may choose to use for display purposes, perhaps by showing a > time > chooser (see "8.1.2 The Input Element" [4]). So, the natural next step > would be to bind that type to the node, as follows: > <xf:bind ref="my:length" type="xsd:time" /> > This will indeed work in XForms Basic, because it will process the type > model item property, and xsd:time is an XML Schema simpleType and is in > the > list of types to be processed by XForms Basic. > > Unfortunately, XForms Full processors have already interpreted the XML > Schema specified by the model schema attribute, and have a conflicting > type. > > Therefore, I believe that it is difficult to create XForms Full profile > documents that also work in XForms Basic, unless some subtyping > allowances > are introduced into the consistency checking performed by the type model > item property. > > Leigh. > > -------------------precision.xml--------------------- > <?xml version="1.0" ?> > <data xmlns="http://www.example.com"> > <time precise="true">06:00:00</time> > </data> > ---------------------precision.xsd----------------------- > <?xml version="1.0" ?> > <xsd:schema xmlns:my="http://www.example.com" > targetNamespace="http://www.example.com" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > elementFormDefault="qualified"> > <xsd:element name="data"> > <xsd:complexType> > <xsd:sequence> > <xsd:element ref="my:time" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="time" type="my:preciseTime"/> > <xsd:complexType name="preciseTime"> > <xsd:simpleContent> > <xsd:extension base="xsd:time"> > <xsd:attribute name="precise" type="xsd:boolean" use="required"/> > </xsd:extension> > </xsd:simpleContent> > </xsd:complexType> > </xsd:schema> > > ---------------------precision.xhtml--------------------- > <?xml version="1.0" encoding="iso-8859-1" ?> > <html xmlns="http://www.w3.org/1999/xhtml" > xmlns:xf="http://www.w3.org/2002/xforms" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:my="http://www.example.com"> > <head> > <title>XForms Samples</title> > <xf:model schema="precision.xsd"> > <xf:instance src="precision.xml" /> > <xf:bind nodeset="my:time" type="xsd:time" /> > <xf:bind nodeset="my:time/@my:precise" type="xsd:boolean" /> > </xf:model> > </head> > <body> > <h1>Precision</h1> > <xf:group> > <xf:input ref="my:time"><xf:label>Time</xf:label></xf:input> > <xf:input > ref="my:time/@my:precise"><xf:label>Precise?</xf:label></xf:input> > </xf:group> > </body> > </html> > ------------------------------------------------------------- > > [1] http://www.w3.org/TR/2003/CR-xforms-basic-20031014/#id2606183 > [2] > http://www.w3.org/TR/2003/REC-xforms-20031014/index-all.html#structure-model > [3] http://www.mathling.com/xsd/ > [4] http://www.w3.org/TR/2003/REC-xforms-20031014/index-all.html#ui-input > >
Received on Tuesday, 2 May 2006 14:26:07 UTC