Deriving XML Link from HyTime Varlink

All,

Just to prove to myself that it really was true, here's how the current XML
extended link can be derived from the new (in the TC) HyTime varlink
element form.

Here are the relevant parts of the HyTime meta-DTD (I've omitted those
attributes that don't correspond to anything in XML Link):

<!element
   varlink        -- Variable link --
                  -- Clause: 8.2.4 --
   - O
   (anchspec+)

>
<!attlist
   varlink
   anchrole       -- Anchor role of varlink element if a self anchor --
      NAME
      #IMPLIED    -- Default: varlink element is not a self anchor --

>

<!element
   anchspec       -- Anchor specification --
                  -- Clause: 8.2.4 --
   - O
   (#PCDATA)*     -- Reference --
>
<!attlist
   anchspec
   anchrole       -- Anchor role of varlink element if a self anchor --
      NAME
      #IMPLIED    -- Default: varlink element is not a self anchor --
   loctype        CDATA #IMPLIED
                  -- Specifies the form of location address used by 
                     referential attributes or content --
>

Here's a sample document derived from XML Link and HyTime varlink. I've
included the architecture declarations, which aren't valid XML (because XML
doesn't [yet] support notation attributes), so you can run this document
through NSGMLS or SGMLNORM if you want to).  Obviously, to make this a
conforming XML document, you'd omit the architecture declarations--any
HyTime-aware tool would still understand the HyTime attribute and other
attributes defined by the HyTime standard--it's only general architecture
processors like SP that really need the architecture declarations.

<!DOCTYPE XML-Link-Test [
  <?ArcBase HyTime>
  <!ENTITY hytime.meta-DTD SYSTEM "hytime.mdt" >

  <!NOTATION HyTime PUBLIC "ISO/IEC 10744:1992//NOTATION
  Hypermedia/Time-Based Structuring Language//EN"
  >
  <!ATTLIST #NOTATION HyTime
            ArcFormA  NAME #FIXED "HyTime"
            ArcNamrA  NAME #FIXED "HyNames"
            ArcDTD    CDATA #FIXED "hytime.meta-DTD"
            ArcDocF   NAME #FIXED "hydoc"
            ArcAuto   NAME #FIXED "arcauto"
  >


  <!ELEMENT XML-Link-Test - - (XLink+) >

  <!NOTATION XMLLoc  PUBLIC "-//W3C//NOTATION XML Link Locator
Specification//EN">
<!-- NOTE: I don't pretend that this publid ID is correct. 
-->

  <!ELEMENT XLink    - - (Locator+) >
  <!ATTLIST XLink
            xml-link NAME #FIXED "extended"
            HyTime   NAME #FIXED "varlink"
  >
  <!ELEMENT Locator  - O EMPTY>
  <!ATTLIST Locator
            xml-link NAME #FIXED "locator"
            HyTime   NAME #FIXED "anchspec"
            role     NAME #IMPLIED
            href     CDATA #REQUIRED
            HyNames  CDATA #FIXED "#ARCCONT href anchrole role"
            loctype  CDATA #FIXED "href queryloc xmlloc"
  >
]>
<xml-link-test>
<xlink>
<locator href="www.drmacro.com/rich-iii/index.html" role="foo">
<locator href="www.drmacro.com/hyperlink/index.html" role="bar">
</xlink>
</xml-link-test>

Here is the result of processing the above with SGMLNORM, requesting the
HyTime architectural instance, rather than the client instance:

C:\techdoc>sgmlnorm -A Hytime  linktest.sgm
<HYDOC><VARLINK>
<ANCHSPEC ANCHROLE="FOO" LOCTYPE="href queryloc xmlloc">
www.drmacro.com/rich-iii/index.html</ANCHSPEC>
<ANCHSPEC ANCHROLE="BAR" LOCTYPE="href queryloc xmlloc">
www.drmacro.com/hyperlink/index.html</ANCHSPEC>
</VARLINK></HYDOC>

I leave treating the XML Link spec as a formal architecture as an exercise
to the reader.

Cheers,

E.



--
<Address HyTime=bibloc>
W. Eliot Kimber, Senior Consulting SGML Engineer
Highland Consulting, a division of ISOGEN International Corp.
2200 N. Lamar St., Suite 230, Dallas, TX 95202.  214.953.0004
www.isogen.com
</Address>

Received on Thursday, 29 May 1997 21:24:50 UTC