- From: Michael Kay <mike@saxonica.com>
- Date: Fri, 13 Mar 2009 08:29:16 -0000
- To: "'Dieter Guthmann'" <mailing-deg@bup-nbg.de>, <xmlschema-dev@w3.org>
The specification is a little bit less formal than one might like:
replace
All occurrences of #x9 (tab), #xA (line feed) and #xD (carriage return)
are replaced with #x20 (space)
collapse
After the processing implied by replace, contiguous sequences of #x20's
are collapsed to a single #x20, and leading and trailing #x20's are removed.
and I guess one could argue for an interpretation that says a character
can't be a "leading #x20" unless it is followed by something - but it seems
a bit far-fetched to me. I think Liquid XML Studio is out on a limb here.
But I've raised bug 6695 to propose a clarification.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: xmlschema-dev-request@w3.org
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Dieter Guthmann
> Sent: 12 March 2009 16:35
> To: xmlschema-dev@w3.org
> Subject: different whitespace-collapse behaviour of parsers
>
> Hi,
>
> I've tested a few XML-Parsers/Validators and discovered that
> the restriction "whiteSpace=collapse" [1] is interpreted in
> two different ways.
>
> "Liquid XML Studio 2009" treats a whitespace-only string
> within a tag not as trailing/leading whitespace [1]:
> "<tag> \n </tag>" will be transformed in "<tag> </tag>" before
> validation (or it seems so),
> whereas the other parsers I've tested (Altova XML Spy,
> XMLmind XML Editor, W3C XSV) will transform
> "<tag> \n </tag>" to "<tag></tag>"
>
> Which behaviour is the correct one? See below for a schema example.
>
> Best Regards,
> Dieter Guthmann
>
> [1]
> <http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#rf-whiteSpace>
>
> Below an Example:
> ------- begin mysschema.xsd -------
> <?xml version="1.0" encoding="utf-8" ?>
> <xs:schema elementFormDefault="qualified"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xs:simpleType name="nocontent">
> <xs:restriction base="xs:string">
> <xs:whiteSpace value="collapse" />
> <xs:pattern value="" />
> <!-- This line above will not work in Liquid XML...
> replace "value" with "[ ]" and it will work -->
> </xs:restriction>
> </xs:simpleType>
> <xs:element name="customerdatabase">
> <xs:complexType>
> <xs:sequence>
> <xs:element ref="customer" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="customer">
> <xs:complexType>
> <xs:simpleContent>
> <xs:extension base="nocontent">
> <xs:attribute name="name" type="xs:string" />
> </xs:extension>
> </xs:simpleContent>
> </xs:complexType>
> </xs:element>
> </xs:schema>
> ------- end myschema.xsd -------
>
> ------- begin myxmlfile.xml -------
> <?xml version="1.0" encoding="UTF-8"?>
> <customerdatabase
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:noNamespaceSchemaLocation="myschema.xsd">
> <customer name="test">
> </customer>
> </customerdatabase>
> ------- end myxmlfile.xml -------
>
>
>
Received on Friday, 13 March 2009 08:30:11 UTC