- From: Ulrich Nicolas Lissé <xforms-issues@mn.aptest.com>
- Date: Thu, 14 Jun 2007 08:58:34 -0500
- To: sspeiche@us.ibm.com
- CC: public-xforms@w3.org, www-forms@w3.org, www-forms-editor@w3.org
Steve,
please see comments inline.
> Leigh,
>
> Thanks for the quick and thorough reply, I have responded inline.
>
> Thanks,
> Steve Speicher
>
> "Klotz, Leigh" <Leigh.Klotz@xerox.com> wrote on 03/28/2007 01:49:42 PM:
>
>> Steve,
>> We discussed this issue at today's teleconference and have some
>> observations and questions.
>> We believe that xsi:type cannot be used to contradict an
>> xf:model/@schema or xf:model/xsd:schema declaration, only to refine it
>> under rules specified normatively by XML Schema.
>> If you agree with this statement but think our wording conveys
>> otherwise, please read point 1.
>> If you believe that XForms can or should allow xsi:type to contradict an
>> author-specified schema, please read points 2, 3, and 4.
>> 1. We agree with you in general that "the wording is intended to state
>> that the node is valid if it passes valdation for both 1) External or
>> inline schema as possibly redefined by xsi:type 2) type MIP." However,
>> we don't agree that about "redefined." There is no attempt to give
>> special meaning to xsi:type outside its definition in XML Schema. All
>> use of xsi:type in instances is bound by XML Schema processing rules,
>> and is normatively defined there, not in XForms. (But see point 4).
>> Instead of
>> "the node satisfies all applicable XML schema definitions (including
>> those associated by the type model item property, by an external or
>> an inline schema, *or* by xsi:type)"
>> Do you think it means the following?
>> "the node satisfies all applicable XML schema definitions (including
>> those associated by the type model item property, by an external or
>> an inline schema, *and* by xsi:type)"
>> If so, we hope that instead of re-issuing the erratum, you are satisfied
>> with our assertion here that it is XML Schema that normatively defines
>> xsi:type, not XForms.
>
> I am satisfied that XForms is not attempting to give special meaning to
> xsi:type. Perhaps this can be clarified in 1.1 drafts?
>
We clarified it, see
http://www.w3.org/MarkUp/Forms/specs/XForms1.1/index-diff.html#model-using-atomic
for changes.
>> 2. We do not understand the reference to "widely deployed usages of
>> validated XML Instances."XML Schema defines xsi:type for the
>> substutition, restriction, or
>> extension of existing types.
>> A document that attempts to override the type of an element with an
>> unrelated type is not valid.
>> According to XML Schema, only with a type defined by restriction or
>> extension, and in some cases by substitution.
>> Please see http://www.w3.org/TR/xmlschema-1/#cos-ct-derived-ok
>> To test this point, I've taken your example below and defined schema.xsd
>> which I think describes the case.
>> It defines a type for the child element which contains only other child
>> elements, and a type called "newType" that contains grandChild elements,
>> which themselves are xsd:string.
>> Here is the Schema:
> ..snip
>> When I attempt to validate the stuff.xml document with a Schema
>> processor I get this error:
>> Element '{http://sample.com}child', attribute
>> '{http://www.w3.org/2001/XMLSchema-instance}type': The type definition
>> '{http://sample.com}newType', specified by
>> xsi:type, is blocked or not validly derived from the type definition of
>> the element declaration.
>> Element '{http://sample.com}grandchild': This element is not expected.
>> Expected is ( {http://sample.com}child ).
>> stuff.xml fails to validate
>> Do you know of a situation in which a Schema processor would allow
>> xsi:type to declare a type for an element which is in conflict with the
>> Schema type definition?
>
> Only as you said by extension or restriction, which still can allow you to
> have instances that can't validate to be types.
>
> Take this schema for an example:
>
> <?xml version="1.0"?>
> <xsd:schema targetNamespace="http://sample.com"
> xmlns:s="http://sample.com"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> elementFormDefault="qualified">
> <xsd:element name="root">
> <xsd:complexType>
> <xsd:sequence minOccurs="1" maxOccurs="1">
> <xsd:element name="child"
> type="s:childType" />
> </xsd:sequence>
> </xsd:complexType>
> </xsd:element>
>
> <xsd:complexType name="childType">
> <xsd:sequence minOccurs="0" maxOccurs="unbounded">
> <xsd:element name="grandChild" type="xsd:string"
> />
> </xsd:sequence>
> </xsd:complexType>
>
> <xsd:complexType name="newType">
> <xsd:complexContent>
> <xsd:restriction base="s:childType">
> <xsd:sequence minOccurs="0"
> maxOccurs="unbounded">
> <xsd:element name="grandChild"
> type="xsd:date" />
> </xsd:sequence>
> </xsd:restriction>
> </xsd:complexContent>
> </xsd:complexType>
> </xsd:schema>
>
> Then validating this instance:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <root xmlns="http://sample.com"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://sample.com schema.xsd">
> <child xsi:type="newType">
> <grandChild>Stuff</grandChild>
> </child>
> </root>
>
> shows that the value "Stuff" is not a valid xsd:date, for example
>
Yes, we agree.
>> 3. Standalone Xerces
>> By Standalone Xerces, do you mean that processing the stuff.xml file
>> without access to the ssample.xsd schema file validates?
>> Given that there is no Schema information available, and there is no
>> type definition for xsi:type either, I believe that the best Xerces can
>> do is declare that the document is well-formed, and cannot test its
>> validity. Do you disagree with this?
>
> What I meant by "standalone", was validation done outside of an XForms
> processor.
> In the XML instance example I gave, it clearly indicated using
> xsi:schemaLocation which schema to validate against. It should have
> access to the schema.xsd schema from a standalone validator, or at least
> an editing environment that supports XML validation.
>
We agree. If you're using an instance outside XForms you can turn on Schema
validation by using xsi:schemaLocation. Note that this is only a hint to the
Schema processor, it is allowed to ignore the hint (see
http://www.w3.org/TR/xmlschema11-1/#xsi_schemaLocation for reference).
>> 4. In Schema validation, it is user of the document who gets to decide
>> what Schema to use, not the document itself.
>> To do otherwise would negate the value of Schema validation, as
>> nefarious instance data could circumvent its own validation!
>> For this reason, Schema processors are allowed to ignore
>> xsi:schemaLocation attributes in documents.
>> See http://www.w3.org/TR/xmlschema-1/#schema-loc which states
>> Unless directed otherwise, for example by the invoking application or
>> by command line option, ...
>> In XForms, we take the xf:model/@schema attribute and the xsd:schema
>> child elements of xf:model to be direction from the invoking
>> application.
>> By #1 above, the xsi:type attribute in the instance cannot specify
>> anything in conflict with the Schema specified by the form author, so we
>> conclude that the correct behavior is to fail to submit because the
>> document is not valid.
>>
>
> So if I understand what you are saying, these 2 statements are not equal:
>
> 1)
> <xf:model schema="schema.xsd">
> <xf:instance>
> <t:root>...</t:root>
> </xf:instance>
> </xf:model>
>
> 2)
> <xf:model>
> <xf:instance>
> <t:root xsi:schemaLocation="http://sample.com schema.xsd">...</root>
> </xf:instance>
> </xf:model>
>
> Since as the author of #1 indicates the overriding schema to use for
> validation and
> author of content of #2 indicates what schema to use for validating
> separate instance.
> Also XForms processors can not take the schema in #2 and treat as the
> @schema attribute on <xf:model>, as
> has to process any xsi:type[s].
>
Yes, you are right. XForms processors ignore any xsi:schemaLocation hints. So
it's the responsibility of the form author to provide a schema attribute on
element xf:model in order to process xsi:type attributes in terms of
validation.
Regards,
Ulrich Nicolas Lissé.
For the Forms WG
>> Leigh.-----Original Message-----
>> From: www-forms-request@w3.org [mailto:www-forms-request@w3.org] On
>> Behalf Of Steve K Speicher
>> Sent: Monday, March 26, 2007 3:42 PM
>> To: www-forms@w3.org
>> Subject: Re: 1.0 errata section 10 (complex type validation
>> clarification)
>> See thread
>> http://lists.w3.org/Archives/Public/www-forms/2006Aug/0047.html
>> and resulting errata
>> http://www.w3.org/2006/03/REC-xforms-20060314-errata.html#E10a
>> I find that the definition for validation in the errata is too strict
>> anddoesn't match that of some widely deployed usages of validated XML
>> instances.
>> Take for instance this example:
>> <!-- simple sample XForms model -->
>> <xf:model schema="schema.xsd">
>> <xf:instance src="stuff.xml" />
>> </xf:model>
>> <!-- stuff.xml -->
>> <root xmlns="http://sample.com"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xsi:schemaLocation="http://sample.com schema.xsd">
>> <child xsi:type="newType">
>> <grandchild>Stuff</grandchild>
>> </child>
>> </root>
>> According to the errata it says: "the node satisfies all applicable
>> XML schema definitions (includingthose associated by the type model item
>> property, by an external or aninline schema, or by xsi:type)"
>> If for example, my "newType" defines a conflicting complex content model
>> for <child> then there is no way for my instance to validate, therefore
>> itcan never be submitted. If you validate the instance using a
>> standalone
>> validator such as Xerces, it validates fine.
>> I believe the wording is intended to state that the node is valid if it
>> passes validation for both these:
>> 1) external or inline schema, as possibly redefined by xsi:type
>> 2) type MIP
>> The errata wording seems to indicate that both external/inline schema
>> andxsi:type schema type definitions should be used.Regards,
>> Steve Speicher
Received on Thursday, 14 June 2007 14:02:16 UTC