New XPointer scheme for SML

The member submission version of the SML spec used the xpointer() scheme to allow inter-document references that use the SML URI scheme to reference non-root elements.  Later on,  we found out that the standardization of the xpointer() scheme was abandoned, and the scheme  is NOT on track to become a  W3C Recommendation. Thus, the xpointer() scheme can't be used in the SML spec.  We discussed this issue in the last F2F meeting, and it was also subsequently discussed in the XML CG. Alternative schemes - such as xpath1()  and element() were proposed by members of XML CG.  However, none of these alternatives are suitable for SML.

The xpath1() scheme is registered in the W3C XPointer registry (http://www.w3.org/2005/04/xpointer-schemes/ ) but it is NOT a W3C recommendation and there is no guarantee about  the stability of this scheme. Henry Thompson has clarified (http://lists.w3.org/Archives/Member/w3c-xml-cg/2007Oct/0009.html) that


"The XPointer registry has no normative status
whatsoever as it stands -- it is provided as a courtesy to the XML
community as a contention resolution mechanism.  The successor to
RFC3023 will give it normative force, but the last draft I saw did not
impose any constraints on changes to registered schemes. . ."


The element() scheme is a W3C Recommendation but it is not XML Schema  aware and requires detailed knowledge of the structure and content of the target document. This  scheme will be very cumbersome to use and therefore is not suitable for SML.

John and I have discussed this issue and we believe that best option for SML is to define a new XPointer scheme in the SML spec, and use this scheme for referencing non-root elements. Kumar has done some research in this area and came up with the following proposal for smlxpath1 - the XPointer() scheme for SML inter-document references


------------------------------
Proposal:
Define our own scheme based on the xpointer framework. The scheme is defined as follows:

1.    Scheme name: smlxpath1.
2.    Scheme BNF:
SML_Fragment_ID = 'smlxpath1' '(' XPath1.0_LocationPath ')'
3.    sml:uri BNF:
SMLURI = URI ('#' SML_Fragment_ID)?
4.    Namespace binding context:
The smlxpath1 scheme inherits the set of namespace bindings available to the containing element.

Reasons / More info:

1.    We do not have to take normative dependence on schemes that are not w3c Recommendations.
2.    We do not have to spend considerable time defining a profile of some other scheme.
3.    Implementation impact:
a.    Must implement Xpointer framework related parsing (as defined by BNF in the xpointer framework).
b.    Must implement Xpointer framework related escaping mechanism.


Thanks!
Pratul

Received on Friday, 23 November 2007 23:55:34 UTC