- From: <noah_mendelsohn@us.ibm.com>
- Date: Tue, 1 Jun 2004 21:51:37 -0400
- To: xml-dist-app@w3.org
Marc Hadley suggets: > "The array's dimensions are represented by each item in > the list of sizes (unspecified size in case of the > asterisk). The number of items in the list represents > the number of dimensions in the array, dimensions are > listed in order from most significant to least > significant. The asterisk, if present, MUST only appear > in the first position in the list. The default value > of the arraySize attribute information item is "*", > that is by default arrays are considered to have a > single dimension of unspecified size." First, I think I can easily live with this proposal. So, take the following as exploring the space a bit, not pushing hard for alternatives. That said, I think it's interesting to ask more carefully what it means to assign an order as in "most significant to least". First of all, our data model says nothing at all about dimensions as far as I can see [1]: "A graph node whose outbound edges are distinguished solely by position is known as an "array". The outbound edges of an array MUST NOT be labeled." Nothing about dimensions there. The main part of the encoding section on arrays says nothing either [2]: "For a graph edge which is distinguished by position: The ordinal position of the graph edge corresponds to the position of the child element information item relative to its siblings The [local name] and [namespace name] properties of the child element information item are not significant. [...] The following rules apply to the encoding of a graph node that represents an "array": * The element information item representing an array node MAY have among its attributes an itemType attribute information item (see 3.1.4.1 itemType Attribute Information Item). * The element information item representing an array node MAY have among its attributes an arraySize attribute information item (see 3.1.6 arraySize Attribute Information Item). " Still nothing about dimensions. Then we get [3]: "3.1.6 arraySize Attribute Information Item The arraySize attribute information item has the following Infoset properties: A [local name] of arraySize . A [namespace name] of "http://www.w3.org/2003/05/soap-encoding". The type of the arraySize attribute information item is enc:arraySize. The value of the arraySize attribute information item MUST conform to the following EBNF grammar [...skipped for brevity...NRM] The array's dimensions are represented by each item in the list of sizes (unspecified size in case of the asterisk). The number of items in the list represents the number of dimensions in the array. The asterisk, if present, MUST only appear in the first position in the list. The default value of the arraySize attribute information item is "*", that is by default arrays are considered to have a single dimension of unspecified size." OK, so out of the blue we get a notion of dimension that seems completely disconnected from the data model or the rest of the array encoding. Nothing here seems to say that the number of elements serialized must relate to the list of sizes, as one might assume. Some notion of multiple dimensions seems to be grafted on as an artifact of this serialization attribute. I >think< that's what's intended might be more carefully captured as: "The arraySize attribute SHOULD be used when it is desired to to suggest a mapping of SOAP compound values distinguished by position to fixed size or multi-dimensional program array data structures. By convention, the mapping is established such that the array's dimensions are represented by each item in the list of sizes (unspecified size in case of the asterisk). The number of items in the list represents the number of dimensions in the mapped array. The subscript that changes most slowly appears first, with others if any following in order; the asterisk, if present, MUST only appear in the first position in the list. The default value of the arraySize attribute information item is "*", suggesting that by default arrays are to be mapped to program structures of a single dimension with unspecified size." Again, I can easily live with Mark's formulation, but I find this whole part of the spec to be unfortunately confusing and imprecise. Does the text I've written above match what people really think is going on? Might it be worth making these more careful clarifications? Thank you. Noah [1] http://www.w3.org/2000/xp/Group/2/06/LC/soap12-part2.html#values [2] http://www.w3.org/2000/xp/Group/2/06/LC/soap12-part2.html#complexenc [3] http://www.w3.org/2000/xp/Group/2/06/LC/soap12-part2.html#arraySizeattr -------------------------------------- Noah Mendelsohn IBM Corporation One Rogers Street Cambridge, MA 02142 1-617-693-4036 --------------------------------------
Received on Tuesday, 1 June 2004 21:52:50 UTC