Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > XML > How to represent links within XML & XSD?

Reply
Thread Tools

How to represent links within XML & XSD?

 
 
akunal@gmail.com
Guest
Posts: n/a
 
      05-04-2006
I'm trying to represent a linked relationship among between nodes as
follows:

<!-- Top level nodes -->
<Cities>
<City>Los Angeles</City>
<City>San Francisco</City>
<City>Seattle</City>
<City>Washington DC</City>
</Cities>
....
<Dimensions>
<Weight>
<Metric>
<Tonnes>
2.5
</Tonnes>
</Metric>
</Weight>
<Height>
<Metric>
<Metres>
6.4
</Metres>
</Metric>
</Height>
</Dimensions>
....

<!-- User level nodes -->
<Address>
<Line1>...</Line1>
<Line2>...</Line2>
<City>/Cities/City[2]</City> <!-- Links to top level nodes -->
</Address>

<Truck>
<Capacity>
<Weight>/Dimensions/Weight/Metric/Tonnes</Weight> <!-- Links
to top level nodes -->
<Height>/Dimensions/Height/Metric/Metres</Height> <!-- Links
to top level nodes -->
</Capacity>
</Truck>


Is it possible to represent this relationship both at design-time (in
the schema/XSD) and at run-time (in the XML document)?

Is there a way to do this in XLink/XPointers such that in Java code I
could, for example, transparently use the linked objects as follows:

System.out.println(address.city);
System.out.println(truck.capacity.weight);
System.out.println(truck.capacity.height);

(Unless I absolutely have to, I don't want to write additional code to
"understand" the semantics of the links to the city, height and weight.
That is, in a Java program, the links should "automatically" refer to
and retrieve the top-level data as "objects" rather than just plain
strings.

Thanks in advance,
Kunal

 
Reply With Quote
 
 
 
 
Joe Kesselman
Guest
Posts: n/a
 
      05-05-2006
The traditional way to represent point-to-point links within an XML
document is by an ID attribute defining the point of interest and IDREF
attributes pointing to those points. Schema does have that concept.

This does require that you explicitly follow the IDREF connection. The
standard XML APIs have some assistance for doing so, eg the DOM's
getElementByID operation. Your example isn't using those APIs -- it's
assuming data binding -- so you need to check the specs of your data
binding tool to see what it does in that regard.


--
() ASCII Ribbon Campaign | Joe Kesselman
/\ Stamp out HTML e-mail! | System architexture and kinetic poetry
 
Reply With Quote
 
 
 
 
akunal@gmail.com
Guest
Posts: n/a
 
      05-05-2006
The biggest failing of ID/IDREF is that the link has no way of
expressing any semantic value as to why the relationship was
established. ID/IDREFs rely on the text that is highlighted to explain
why the link was inserted. This model works if the authors understand
the semantic meaning of the links that should point to or from the file
that they were authoring. And, although this isn't important as yet,
ID/IDREF can't express bi-directional links.

I was reading up on XLinks and it appears that XLink enables you to:
(1) Link between resources without the need to change them (very imp
req in my case)
(2) Build new documents dynamically from a template link document
(could be imp as an alternative)
(3) Have true bi-directional links between resources (not imp)
(4) Group sets of related resources in strongly typed relationships
(imp)
(5) Link between structured and unstructured information (very imp)
(6) Manage large repositories of link information in a centralised
efficient manner (not imp)
(7) Link resources that are stored in a variety of different data
repositories (imp)
( Create links using any application that creates XML XLink documents
(not sure)

I don't know if ID/IDREF can do those or how XLink can do them, with or
without using a separate tool other than a traditional XML parser.

 
Reply With Quote
 
Joseph Kesselman
Guest
Posts: n/a
 
      05-05-2006
http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:
> The biggest failing of ID/IDREF is that the link has no way of
> expressing any semantic value as to why the relationship was
> established.


Not entirely true; that's a matter of how you design your document.
Remember, the IDREF doesn't exist in a vacuum; its context may provide
additional information.

Keys, defined in the Schema spec, are a more flexible alternative to IDs
and (because there are multiple key spaces rather than a single shared
space for all IDs) may be more felxible in this regard.

> ID/IDREF can't express bi-directional links.


True.

> I was reading up on XLinks


XLink is indeed a much richer mechanism. There still isn't much
off-the-shelf support available for it, unfortunately, so actually using
it productively can be a challenge. And you did way you didn't want to
write additional code.


--
Joe Kesselman / Beware the fury of a patient man. -- John Dryden
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
FF Crashes on Links within Links Puma Firefox 10 02-17-2009 07:12 PM
dealing with nested xml within nested xml within...... Ultrus Python 3 07-09-2007 09:00 PM
Can XML Schema represent this? Steven Burr XML 2 06-02-2004 02:59 PM
Represent deleted data with XML Nate XML 1 01-10-2004 02:48 PM
XML Document Design to represent a Heirarchy Trevor Andrew XML 0 07-21-2003 05:33 AM



Advertisments