Re: [mmox] Example of what could be a real XML LLSD
eh2th-mmox@yahoo.com Wed, 25 February 2009 04:19 UTC
Return-Path: <eh2th-mmox@yahoo.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 99E663A69D7 for <mmox@core3.amsl.com>; Tue, 24 Feb 2009 20:19:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.474
X-Spam-Level:
X-Spam-Status: No, score=-2.474 tagged_above=-999 required=5 tests=[AWL=0.124, BAYES_00=-2.599, HTML_MESSAGE=0.001]
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 qybUEP3gJiWe for <mmox@core3.amsl.com>; Tue, 24 Feb 2009 20:19:11 -0800 (PST)
Received: from web65709.mail.ac4.yahoo.com (web65709.mail.ac4.yahoo.com [76.13.9.101]) by core3.amsl.com (Postfix) with SMTP id 3E35E3A67CF for <mmox@ietf.org>; Tue, 24 Feb 2009 20:19:11 -0800 (PST)
Received: (qmail 95745 invoked by uid 60001); 25 Feb 2009 04:19:30 -0000
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:MIME-Version:Content-Type:Message-ID; b=bE1kKH/nNtEwvmx4eY+gfW5CV9vAXinYh+TPwLigbf5KzO5ERlgz5JGkOtptNYfuMYEQaT+ESpQSEqAg3YnFt4fR0RBDIUTGZfBt44cEyU9xLRePRQfjNZgWYGa8SGnlvCcbMuhF7MSmxXdypEZUn4CT6xuYbpTxPwS65+pa6hI=;
X-YMail-OSG: 6kZqIsYVM1kLAh5WRIBXmBA52fTZ0Tv4hCf2P_lLlEq23Yf_g6sj9jVslOPE3giIKQl2iUmENpDDgS14Zm5I7cxcWWJjkbx3KVuyDrJJFd0s6lyxgx982lGVfOruSx_iX.evr.SU83CZsrmUBWPG6Vi3a.9yLSmBbKepwjcGasfmCQ6oKYPpJgH5XQV_Q_GAot2BZnr61yoweUcuW9Wh40cp6A--
Received: from [72.220.236.152] by web65709.mail.ac4.yahoo.com via HTTP; Tue, 24 Feb 2009 20:19:30 PST
X-Mailer: YahooMailRC/1155.45 YahooMailWebService/0.7.260.1
References: <ebe4d1860902241724s537a2d4dv1fd5014b50b6e085@mail.gmail.com>
Date: Tue, 24 Feb 2009 20:19:30 -0800
From: eh2th-mmox@yahoo.com
To: Catherine Pfeffer <cathypfeffer@gmail.com>, mmox@ietf.org
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="0-1580952824-1235535570=:94038"
Message-ID: <256728.94038.qm@web65709.mail.ac4.yahoo.com>
Subject: Re: [mmox] Example of what could be a real XML LLSD
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: Wed, 25 Feb 2009 04:19:12 -0000
Apologies if I missed the answer if it was in an earlier message... The "XML way" message appears to be loosly typed. How could a parser create an object from that XML data and know the difference between an integer and a float, or a UUID and a string? --Tom ________________________________ From: Catherine Pfeffer <cathypfeffer@gmail.com> To: mmox@ietf.org Sent: Tuesday, February 24, 2009 5:24:40 PM Subject: [mmox] Example of what could be a real XML LLSD Hello, Here is a real LLSD packet. Below I'll show how it could look like if we would abandon the 1:1 mapping to binary serialization. If transposing 1:1 the binary encoding, the packet is 2688 bytes long. If doing it in a more xml-ish way, the packet is 1065 bytes long. That's 40 % of the length the current LLSD proposal generates. It's also more legible by humans, easier to validate and easier to parse. Those figures include 2 spaces of indentation at each tag level, and all the newline characters. First the "transposition of binary serialization" way: <llsd> <map> <key>AgentData</key> <map> <key>AgentId</key> <uuid>81466fc7-276f-455d-9b72-8316e9712535</uuid> <key>GroupId</key> <uuid/> <key>SessionId</key> <uuid>4bbb6fa9-e649-4507-a709-8831c237c4ee</uuid> </map> <key>ObjectData</key> <map> <key>BypassRaycast</key> <boolean>1</boolean> <key>EveryoneMask</key> <binary encoding="base64">AAAAAA==</binary> <key>Flags</key> <binary encoding="base64">AAAAAg==</binary> <key>GroupMask</key> <binary encoding="base64">AAAAAA==</binary> <key>Material</key> <integer>3</integer> <key>NextOwnerMask</key> <binary encoding="base64">AAjAAA==</binary> <key>PCode</key> <integer>9</integer> <key>Path</key> <map> <key>Begin</key> <integer>0</integer> <key>Curve</key> <integer>16</integer> <key>End</key> <integer>0</integer> <key>RadiusOffset</key> <integer>0</integer> <key>Revolutions</key> <integer>0</integer> <key>ScaleX</key> <integer>100</integer> <key>ScaleY</key> <integer>100</integer> <key>ShearX</key> <integer>0</integer> <key>ShearY</key> <integer>0</integer> <key>Skew</key> <integer>0</integer> <key>TaperX</key> <integer>0</integer> <key>TaperY</key> <integer>0</integer> <key>Twist</key> <integer>0</integer> <key>TwistBegin</key> <integer>0</integer> </map> <key>Profile</key> <map> <key>Begin</key> <integer>0</integer> <key>Curve</key> <integer>1</integer> <key>End</key> <integer>0</integer> <key>Hollow</key> <integer>0</integer> </map> <key>RayEnd</key> <array> <real>42.9329986572265625</real> <real>29.6600322723388671875</real> <real>31.399318695068359375</real> </array> <key>RayEndIsIntersection</key> <boolean>0</boolean> <key>RayStart</key> <array> <real>48.281482696533203125</real> <real>32.063152313232421875</real> <real>34.092010498046875</real> </array> <key>RayTargetId</key> <uuid/> <key>Rotation</key> <array> <real>0</real> <real>0</real> <real>0</real> <real>1</real> </array> <key>Scale</key> <array> <real>0.5</real> <real>0.5</real> <real>0.5</real> </array> <key>State</key> <integer>0</integer> </map> </map> </llsd> Now the "XML" way: <llsd> <AgentData AgentId="81466fc7-276f-455d-9b72-8316e9712535" GroupId="" SessionId="4bbb6fa9-e649-4507-a709-8831c237c4ee" /> <ObjectData BypassRaycast="1" EveryoneMask="0x00000000" Flags="0x00000002" GroupMask="0x00000000" Material="3" NextOwnerMask="0x0008C000" PCode="9"> <Path Begin="0" Curve="16" End="0" RadiusOffset="0" Revolutions="0" ScaleX="100" ScaleY="100" ShearX="0" ShearY="0" Skew="0" TaperX="0" TaperY="0" Twist="0" TwistBegin="0" /> <Profile Begin="0" Curve="1" End="0" Hollow="0" /> <RayEnd x="42.9329986572265625" y="29.6600322723388671875" z="31.399318695068359375" IsIntersection="0" /> <RayStart x="48.281482696533203125" y="32.063152313232421875" z="34.092010498046875" /> <RayTargetId uuid="" /> <Rotation x="0" y="0" z="0" s="1" /> <Scale x="0.5" y="0.5" z="0.5" /> <State bool="0" /> </ObjectData> </llsd> Even better results could be achieved by using default values for some attributes. -- Cathy
- [mmox] Example of what could be a real XML LLSD Catherine Pfeffer
- Re: [mmox] Example of what could be a real XML LL… eh2th-mmox
- Re: [mmox] Example of what could be a real XML LL… Meadhbh Hamrick (Infinity)