Re: [mmox] XML serialization

Mark Lentczner <markl@lindenlab.com> Mon, 23 February 2009 22:54 UTC

Return-Path: <markl@lindenlab.com>
X-Original-To: mmox@core3.amsl.com
Delivered-To: mmox@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id DCFE03A6ADC for <mmox@core3.amsl.com>; Mon, 23 Feb 2009 14:54:33 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.51
X-Spam-Level:
X-Spam-Status: No, score=-3.51 tagged_above=-999 required=5 tests=[AWL=0.089, BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id azytNbFpbVHE for <mmox@core3.amsl.com>; Mon, 23 Feb 2009 14:54:33 -0800 (PST)
Received: from tammy.lindenlab.com (tammy.lindenlab.com [64.154.223.128]) by core3.amsl.com (Postfix) with ESMTP id 100813A63D3 for <mmox@ietf.org>; Mon, 23 Feb 2009 14:54:33 -0800 (PST)
Received: from nil.lindenlab.com (nil.lindenlab.com [10.1.16.4]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by tammy.lindenlab.com (Postfix) with ESMTP id 628013DBC44C for <mmox@ietf.org>; Mon, 23 Feb 2009 14:54:51 -0800 (PST)
Message-Id: <777F85B9-1676-491D-91C8-0E772253619D@lindenlab.com>
From: Mark Lentczner <markl@lindenlab.com>
To: mmox@ietf.org
In-Reply-To: <49A30D7A.3040003@gmail.com>
Content-Type: text/plain; charset="US-ASCII"; format="flowed"; delsp="yes"
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0 (Apple Message framework v930.3)
Date: Mon, 23 Feb 2009 14:54:51 -0800
References: <ebe4d1860902230239q207d4c0ar5b0582ad7ca855bf@mail.gmail.com> <49A30D7A.3040003@gmail.com>
X-Mailer: Apple Mail (2.930.3)
Subject: Re: [mmox] XML serialization
X-BeenThere: mmox@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Massively Multi-participant Online Games and Applications <mmox.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/mmox>, <mailto:mmox-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/mmox>
List-Post: <mailto:mmox@ietf.org>
List-Help: <mailto:mmox-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mmox>, <mailto:mmox-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 23 Feb 2009 22:54:33 -0000

Catherine Pfeffer wrote:
> <llsd>
>   <map>
>      <entry>
>        <key>success</key>
>        <boolean>true</boolean>
>      </entry>
>      <entry>
>        <key>something_i_like_to_eat_on_sundays</key>
>        <string>bananas</string>
>       </entry>
>   </map>
> </llsd>

Jon Watte wrote:
> <map>
> <value type="boolean" key="success>true</value>
> <value type="string"  
> key="something_i_like_to_eat_on_sundays">bananas</value>
> </map>

This format is notably more difficult for schemas (from XMLSchema to  
RelaxNG) to support, since value now has a key attribute that is only  
valid iff it is tested in a map element.  Second, you have left out  
the top element, which needs to be something fixed, rather than being  
map or array or value depending on the structure of the data.

Including a type attribute also makes things difficult for schemas, as  
the content of the value element now depends on the value of one of  
it's attributes.

Including the key value as an attribute value will make this somewhat  
harder to edit in some systems where "human readable" text is  
generally much easier to handle as element content.  Keeping the key  
value as element content also keeps the processing with key values  
consistent with the processing of string values with respect to string  
handling including normalization.

The issue of wrapping each key value pair of a map in an entry element  
or just using ordered alternation is one of those infinite XML debates.

The XPath argument doesn't hold:  XPath expressions for selecting the  
value of the success entry in a map are about the same, and not all  
that difficult:

Current draft LLSD:
	/llsd/map/key[.="success"]/following-sibling::*[1]

Catherine's LLSD:
	/llsd/map/entry/key[.="success"]/following-sibling::*[1]

Jon's LLSD:
	/llsd/map/value[@key="success"]

True, Jon's LLSD yields a slightly smaller and cleaner XPath  
expression, the others are nothing out of the ordinary.

	- Mark




Mark Lentczner
Sr. Systems Architect
Technology Integration
Linden Lab

markl@lindenlab.com

Zero Linden
zero.linden@secondlife.com