[Nml-wg] xml list examples
Jason Zurawski
zurawski at internet2.edu
Thu Dec 9 08:18:12 CST 2010
All;
Lets try this again. Some comments inline.
On 12/2/10 4:16 PM, Aaron Brown wrote:
> On the call, I was asked to send some examples of how we've done ordered lists in XML before. Looking through various xml bits, I found a few different ways that we've sorted lists.
>
> 1) a numerical 'id' element:
>
> <nmwg-cp:hop id=”0”>
> ....
> </nmwg-cp:hop>
> <nmwg-cp:hop id=”1”>
> ....
> </nmwg-cp:hop>
> <nmwg-cp:hop id=”2”>
> ....
> </nmwg-cp:hop>
> <nmwg-cp:hop id=”3”>
> ....
> </nmwg-cp:hop>
>
> 2) explicit 'next' pointers:
As Guilherme pointed out, there may need to be some way to denote the
'head' (e.g. a 'firstHop' attribute/element) or maybe a 'doubly' linked
list to point forward and backward from each element.
I am not sure this is a requirement, but it makes things 'easier' to
interpret. If all elements were parsed in a different order we could
build the correct order by examining all, its just not immediately clear
which would be first without seeing all.
> <path>
> <hop id="internet2-1">
> ....
> <nextHop>esnet-1</nextHop>
> </hop>
> <hop id="esnet-1">
> ....
> <nextHop>bnl-1</nextHop>
> </hop>
> <hop id="bnl-1">
> ....
> </hop>
> </path>
>
> 3) implicit document ordering (this data corresponds to a traceroute. there would be more 'datum' elements in a real traceroute instance each of which corresponds to a single traceroute probe sent. This was cleaned up to make it easier to read):
N.B. Aaron was incorrect in his original synopsis here. Note that the
'ttl' field is being used to specify the order, so this example is
similar to #1.
It is a coincidence that the example is 'in order', and due to XML
libraries having spotty support for ordering (e.g. 'document order') and
the lack of a true ordering consideration in the XML spec itself, there
needs to be an alternate way to unambiguously determine the order of
elements.
> <nmwg:data id="data.AAAFFF.0" metadataIdRef="meta.AAAFFF" xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/">
> <traceroute:datum hop="198.129.254.29" numBytes="64" queryNum="1" timeType="unix" timeValue="1282079154" ttl="1" value="0.135" valueUnits="ms"/>
> <traceroute:datum hop="134.55.219.10" numBytes="64" queryNum="1" timeType="unix" timeValue="1282079154" ttl="2" value="1.14" valueUnits="ms"/>
> <traceroute:datum hop="134.55.217.2" numBytes="64" queryNum="1" timeType="unix" timeValue="1282079154" ttl="3" value="37.212" valueUnits="ms"/>
> <traceroute:datum hop="134.55.209.98" numBytes="64" queryNum="1" timeType="unix" timeValue="1282079154" ttl="4" value="1.616" valueUnits="ms"/>
> <traceroute:datum hop="134.55.220.49" numBytes="64" queryNum="1" timeType="unix" timeValue="1282079154" ttl="5" value="28.643" valueUnits="ms"/>
> <traceroute:datum hop="134.55.209.46" numBytes="64" queryNum="1" timeType="unix" timeValue="1282079154" ttl="6" value="41.773" valueUnits="ms"/>
> <traceroute:datum hop="134.55.221.58" numBytes="64" queryNum="1" timeType="unix" timeValue="1282079154" ttl="7" value="52.36" valueUnits="ms"/>
> <traceroute:datum hop="134.55.218.101" numBytes="64" queryNum="1" timeType="unix" timeValue="1282079154" ttl="8" value="52.373" valueUnits="ms"/>
> <traceroute:datum hop="198.124.252.141" numBytes="64" queryNum="1" timeType="unix" timeValue="1282079154" ttl="9" value="52.311" valueUnits="ms"/>
> </nmwg:data>
Thanks;
-jason
More information about the nml-wg
mailing list