Keyscope Test 01 Description

Verifies that keys defined on topicrefs that also specify @keyscope are in the specified scope and not the parent scope.

Overview

This map has two topicrefs. Each topicref defines both a key scope and a key name, with a reference to a unique topic:
  <topicref id="tr-scope-01"
    keyscope="scope-01"
    keys="topic-01"
    href="topics/topic-01.dita"/>
  <topicref id="tr-scope-02"
    keyscope="scope-02"
    keys="topic-01"
    href="topics/topic-02.dita"
    />
To refer to the key "topic-01" from outside the scope "scope-01", the correct key reference is "scope-01.topic-01", as used in the xref from topic-02.dita:
<xref keyref="scope-01.topic-01"/>

The topic topic-01.dita has the equivalent qualified key reference to topic-02.dita as used from topicref "tr-scope-02".

Expected Result

The xref to key "scope-01.topic-01" should be resolved to topic-01.dita as used by topicref "tr-scope-01".

Relevant Specification Clauses

The relevant spec language is in clause 2.3.4.2, Key Scopes (http://docs.oasis-open.org/dita/dita/v1.3/os/part3-all-inclusive/archSpec/base/keyScopes.html):
A key scope includes the following components:
  • The scope-defining element
  • The elements that are contained by the scope-defining element, minus the elements that are contained by child key scopes
  • The elements that are referenced by the scope-defining element or its descendants, minus the elements that are contained by child key scopes

(Italics added)

Test Results

Tests run 30 March 2016 for oXygen 18, XMetal 11.

Table 1. Test Results
Processor Test Result Notes
Open Toolkit 2.2.2, XHTML transform Correct result Incorrectly reports the key "topic-01" in scope "scope-02" as a duplicate.
Open Toolkit 2.2.2, PDF transform Correct result Incorrectly reports the key "topic-01" in scope "scope-02" as a duplicate.
oXygenXML 18 beta Reports map as valid, resolves links correctly. When re-used topic is opened in the context of a specific scope the xref's resolved text and associated target reflects the current scope, even if topic was already open in the editor.  
oXygenXML 17.1 Reports map as valid, resolves links correctly.  
XMetaL 11 Correct result. Cross references are resolved to the correct scope-specific target. Scopes are correctly reflected in the key space manager. Note that there is a known bug in the initial release of XMetal 11 that prevents xref text from being resolved in the editor. Cannot verify that xref text reflection is correct but assume it will be.
XMetaL 10 Appears to resolve the key references in the editor but without regard to the scope context. In the re-used topic, it reflects the result of resolving the key reference in the scope of scope-01 This seems to be a side effect of XMetaL using PIs to put the resolved link text in the XML source, rather than resolving the reference dynamically at presentation time.