Kimber - HyTime clink - missing arch attribute?
Message-ID: <35EEA7F8.8D04857A@isogen.com>
From: "W. Eliot Kimber" <eliot@isogen.com>
Organization: ISOGEN International Corp.
Newsgroups: comp.text.sgml
Subject: Re: HyTime clink - missing arch attribute?
Date: Thu, 03 Sep 1998 09:30:16 -0500
ng3j@udcf.gla.ac.uk writes:
> In the HyTime meta-DTD, the attribute list for clink is:
>
> <!attlist
> clink -- Contextual link --
> -- Clause: 8.2.2 --
>
> HyBase NAME #FIXED hylink
> HyBnames CDATA #FIXED "refsub linkend"
> ...
> >
>
> Now, my understanding is that, since HyBnames is the architectural
> attribute renamer attribute for the HyBase architecture (as declared
> earlier in hi2mdhyt.sgm), that this is intended to rename the hylink
> element's `refsub' attribute to `linkend'. However, there _isn't_ a
> refsub attribute for the hylink element in the HyBase architecture, so
> this all goes wrong.
>
> If I add such an attribute to the hylink element, everything works as
> I think it should.
>
> Now, either I'm grievously misunderstanding something here (in which
> case, could someone put me out of my misery), or else this attribute
> is indeed erroneously missing from the standard. The latter seems
> rather unlikely, but not entirely impossible.
The problem is one of the rules for architectural validation not being
completely agreed upon (or at least underspecified).
The definition of the HyTime hylink element form says that for each
anchor role defined for a link, there must be an attribute for each
anchor role whose name is the same as the anchor role name. These
attributes are the locators for their corresponding anchors.
The anchor roles for the clink form (derived from hylink) are "refmark"
and "refsub":
<!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 --
>
The "anchor existence constraints" (anchcstr) attribute indicates that
the refmark anchor is satisfied by the clink element itself (the keyword
"self"). The keyword "required" means that the refsub anchor must be
explicitly addressed. Thus, a HyTime engine would normally expect to
find an attribute called "refsub" on clink elements.
However, for historical reasons, the attribute used to address the
refsub anchor needs to be called "linkend", so we use the normal
architectural attribute renaming mechanism to rename "refsub" to
"linkend". We (the HyTime editors) don't think it matters that refsub
isn't defined by the architectural DTD--it's sufficient that the
architecture-specific processor expects to find an attribute with the
name refsub.
However, SP's architectural processor sees things differently and gives
a warning to the effect that you've remapped something that doesn't
exist in the architectural DTD.
> Should I be surprised, by the way, that the source materials available
> at http://www.ornl.gov/sgml/wg8/ don't include the errata listed in the
> Technical Corrigendum[1]?
No. The TC has yet to be published, so we haven't updated the materials
on the WG8 site (as explained in a related post, the materials at the
HyTime User's Group site reflect the latest corrections but are
unofficial). Expect the TC to be completed by the ISO meeting in
November or shortly thereafter.
BTW, if anyone has any comments on the TC or HyTime Second Edition, I'd
certainly like to hear from you. It's not too late to make additional
minor fixes as long as they don't affect the fundamental design.
--
<Address HyTime=bibloc homepage="http://www.drmacro.com">
W. Eliot Kimber, eliot@isogen.com
Senior SGML Consulting Engineer, ISOGEN International Corp.
2200 North Lamar Street, Suite 230, Dallas, Texas 75202
+1-214-953-0004 +1-214-953-3152 (fax)
http://www.isogen.com (work)</Address>
![[Onward]](icon/next-1.png) |