OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

dita message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [dita] DITA v1.2 Review | Propagating attribute values



I'm confused. I may be completely misunderstanding what you're saying,
Chris, but here's my understanding.

> [...] if I have both @href and 
> @keyref on an element, and the key definition also has an 
> @href, the @href on the reference wins?  Or is @href an 
> exception?  And if @href is an exception, then shouldn't 
> @scope, @format, and @type be also?
> 
> Say you had this xref:
> 
> <xref keyref="website" scope="external" format="html" 
> href="http://www.oasis-open.org";>website</xref>
> 
> Is there no way to change where this xref points by defining 
> 'website'? If that's the case, then the language in the spec 
> about falling back to the href on the referencing element is 
> probably irrelevant.

In my simple brain I thought that "the @href on the referencing element"
that also has a @keyref is _always_ irrelevant unless the definition of
the key name fails to resolve to a resource. It's a fallback. That's
what "the language in the spec about falling back to the href on the
referencing element" means. It's at 2.1.3.4.3.2 "Using keys to address
DITA elements":

        If both @keyref and @href attributes are specified 
        on an element, the @href value must be used as a 
        fall-back address when the key name is undefined, 
        and should be used as a fall-back address when the 
        key name is defined but the key reference cannot 
        be resolved to a resource.

I'm not sure where the generalization "the reference wins" comes from.
Several references are in play here. The @href on the referring element
'wins' only if the reference specified in the key definition fails.

In your example above, the key name "website" is set to the @href
reference given in the effective <keydef> or <topicref> that defines
that key name. If you want to change what it points to, you include the
topic that contains that <xref> in a map in which some other definition
of the key name "website" comes first. If you move it to a map in which
the key name "website" is not defined, or if for some other reason that
key name does not resolve to a URI, then the <xref> resolves to
href="http://www.oasis-open.org"; (the @href in the referring element) as
a fallback.

> The spec also states [at 2.1.3.4.3.3 "Processing key references"]:
> 
> ====
> When a key definition has no @href value and no @keyref 
> value, references to that key will not result in a link, even 
> if they do contain an @href attribute of their own.
> ====
> 
> Is this a special case? It seems to run counter to the idea 
> that the referencing element wins.

A reference to that key is a reference to null. If you include the topic
with your example <xref> in a map in which the key name "website" refers
to null, then there is no link at that location in output. Further, if
empty elements in that topic use @keyref with that key name to pull in
content, then in this map where the key name "website" refers to null
those elements are dropped from output. I don't remember, but I bet
there was discussion of use cases for this behavior.

The language here (2.1.3.4.3.3 Processing key references) clouds the
distinction between the referring element and the references (@keyref,
@href, etc.) that the referring element contains. This is how the spec
reads now:

	When a key definition has no @href value and no @keyref value, 
	references to that key will not result in a link, even if they 
	do contain an @href attribute of their own.

The word "they" is ambiguous. This is how I think it should read:

	When a key definition has no @href value and no @keyref value, 
	references to that key will not result in a link, even if the 
	referring element contains an @href attribute of its own. 

If I'm out to lunch here, I expect to be corrected in short order, but I
think I'm understanding this correctly.

	/Bruce



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]