Re: sml:ref vs xlink

Travis,

A couple of quick answers. Others may have more to add.

First of all, <sml:uri> is only one kind of "reference scheme" defined by 
the SML spec. Others may be defined by other specs/implementations. For 
example, I can have my "evil" scheme "ignore all my children and 
attribute; this reference always points to my parent", then in the 
following example:

<parent>
  <child sml:ref="true"/>
</parent>

"child" is an SML reference, and it points to "parent". This will always 
work in SML processors that support my evil scheme.

Not fixing the scheme (to using URI or XPath) leaves a lot of freedom in 
terms of how reference schemes can be designed. This is very useful, see 
below.

The second point is that we want SML to serve scenarios with legacy data. 
You may have terabytes of XML describing your system and now you want to 
take advantage of SML's validation capabilities. You certainly don't want 
to change all your date and insert XLink tags everywhere to replace your 
old references. Allowing flexible reference scheme design allows you to 
make minimum or no change to your data. You simply need to define your 
scheme (how they are recognized and dereferenced). You may only need to 
insert sml:ref="true" attributes to references in your XML data. Even that 
can be avoided by using a default value (DTD or Schema).

So yes I agree XLink is a good mechanism to link XML data, especially when 
you are starting from scratch, but it does not meet all SML requirements.

Thanks,
Sandy Gao
XML Technologies, IBM Canada
Editor, W3C XML Schema WG
Member, W3C SML WG
(1-905) 413-3255 T/L 313-3255
 



"zamp\@libero\.it" <zamp@libero.it> 
Sent by: public-sml-request@w3.org
2008-02-27 07:22 AM

To
"public-sml" <public-sml@w3.org>
cc

Subject
sml:ref vs xlink







I All,

recently I have read SML specification and in particular sml reference 
mechanism in XML instance document. However I don't understand the reason 
of introducing a new mechanism instead of using xlink.

Are there some advantages in using sml:ref?
If yes...which ones?

That is to say...about this example:

<EnrolledCourse sml:ref="true">
    <Name>PHY101</Name>
    <Grade>A</Grade>
    <sml:uri>     
http://www.university.example.org/Universities/MIT/Courses.xml
 #xmlns(u=http://www.university.example.org/ns)
 xpointer(/u:Courses/u:Course[u:Name='PHY101'])
    </sml:uri>
</EnrolledCourse>

Why not like that?

<EnrolledCourse>
    <Name>PHY101</Name>
    <Grade>A</Grade>
    <environment xmlns:xlink="http://www.w3.org/1999/xlink" 
        xlink:type="extended">
        <course xlink:type="locator" xlink:label="course"
xlink:href="http://www.university.example.org/Universities/MIT/Courses.xml
                     #xmlns(u=http://www.university.example.org/ns)   
xpointer(/u:Courses/u:Course[u:Name='PHY101'])"/>
    </enviroment>
</EnrolledCourse>



Best regards..

Travis

Received on Thursday, 28 February 2008 17:04:04 UTC