These pages are now out-of-date

Bookmarks / SGML exegeses / Gray - HyTime's clink and anchrole

[Help] [Root] [Up] [Prev] [Next]

Gray - HyTime's clink and anchrole

Path: singer.cent.gla.ac.uk!usenet
From: Norman Gray <ng3j@udcf.gla.ac.uk>
Newsgroups: comp.text.sgml
Subject: HyTime's clink and anchrole
Date: 3 Aug 1998 10:53:50 GMT
Organization: University of Glasgow
Lines: 111
Message-ID: <6q44ru$i7d@singer.cent.gla.ac.uk>
NNTP-Posting-Host: lenzie.cent.gla.ac.uk
Organisation: Glasgow University, UK
X-Newsreader: NN version 6.5.0 #18 (NOV)
Xref: singer.cent.gla.ac.uk comp.text.sgml:17154


Greetings,

...and here was me thinking I was understanding HyTime!

Can anyone give me a clue what I'm missing here (or indeed point me
towards a more appropriate place to ask - I can't seem to find any
forums less exalted than this one to ask what feels like a naive
question)?

I hope my question doesn't sound too much like a lazy
`why-isn't-my-program-working' whine.  After a good deal of thought,
I seem to be confused about some pretty fundamental point, so with
a bit of luck any explanation will be of interest to others as well.

In the HyTime meta-DTD we find the following in the links module:

<!attlist
   clink          -- Contextual link --
                  -- Clause: 8.2.2 --

   HyBase   NAME     #FIXED hylink
   HyBnames CDATA    #FIXED "refsub linkend"
   anchrole CDATA    #FIXED "refmark refsub #LIST"
   anchcstr NAMES    "self required"

   linkend        -- Reference subject link end --
      CDATA       -- Reference --
      #IMPLIED    -- Default: omitted or conditional --
                  -- Constraint: if left unspecified, must specify
                     COND in anchcstr --
>

Now, I was suffering from the delusion that I understood this.

1  The anchor roles are given their meaning by the natural-language
   description in clause 8.2.2, and are otherwise unconstrained
   (specifically, the authors could have named them refbilly and refbob,
   and the only folk who'd have to care would be those writing
   HyTime-aware applications).

2  refmark is a SELF anchor, so there doesn't have to be an attribute
   whose name is refmark (clause 8.2.1).

3  refsub isn't a SELF anchor, so there has to be a refsub attribute
   somewhere.  Only a HyTime engine could check this constraint
   (because it `knows' about 8.2.1) - a generic architecture processor
   couldn't, because this isn't expressed in any (meta-)DTD (the
   implication of point 1).

4  That would seem to be taken care of by the previous line, which maps
   the HyBase attribute refsub to the attribute linkend.

5  But there _isn't_ a HyBase refsub attribute (at least, not that
   I or SP have been able to find in hi2mdhyt.sgm, which is what I'm mapping
   to the entity name 'ISO/IEC 10744:1997//DTD AFDR Meta-DTD
   Hypermedia/Time-based Structuring Language (HyTime)//EN'), so that
   sgmlnorm (reasonably) objects to the attempted remapping of the
   non-existent architecture attribute "REFSUB"

6  I can't cut the knot by declaring my own refsub attribute in the
   client DTD because (a) what then would be the point of the linkend
   attribute?, and (b) the attribute (surely) has to be architectural,
   which an attribute in the client DTD wouldn't be.

7  GOTO 1

...and that's where the back of my head falls off.  I thought I'd
found some clue in Note 239, but decided that didn't have anything
to do with it.

And that's the problem: one of these understandings must be wrong, but they
all sound so reasonable, they appear to me to have support from the
standard, and they appear to be consistent.  



I'm using SP 1.3.1 and the following little DTD (am I doing _this_ the
correct way?)

<?IS10744 ArcBase HyTime>
<!notation HyTime system >
<!entity % HyTimeDTD 
	public 'ISO/IEC 10744:1997//DTD AFDR Meta-DTD
Hypermedia/Time-based Structuring Language (HyTime)//EN'>
<!attlist #notation HyTime
	ArcFormA	name	#fixed	HyTime
	ArcDTD		CDATA	#fixed	"%HyTimeDTD"
	ArcDocF		name	#fixed	HyDoc
	ArcNamrA	name	#fixed	HyNames
	ArcBridF	name	#fixed	HyBrid
	ArcOptSA	names	#fixed	"links"
	links		cdata	#fixed	"clink"
	>
<!element sltest	- - (title, p+)>
<!element title		- - (#pcdata)>
<!element p		- - (#pcdata | a)+>
<!element a		- - (#pcdata)>
<!attlist a
	HyTime	name	#fixed	clink
	linkend	cdata	#required
	>

Thanks for any insights at all.  I'll summarise multiple responses.

All the best,

Norman
--
---------------------------------------------------------------------------
Norman Gray                        http://www.astro.gla.ac.uk/users/norman/

[Onward]
Norman
1 January 2001