[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Cascading attribute metadata that merges (or not)
Hi,
I'm looking at comments in the "metadata cascade" topic, and realized that the definition of the new @cascade attribute left at least one case unspecified:
https://ditaweb.com/oasis-dita/#/00028678-DB.00028004-DB.Cascading%20of%20attributes%20and%20metadata%20in%20a%20DITA%20map
Specifically, what is the evaluated value for @platform on the second topicref in this scenario?
<map platform="A" cascade="merge">
<topicref platform="B">
<topicref cascade="nomerge">
When the cascade is evaluated, the @platform value for <map> cascades to and is merged with @platform="B" on the first topicref, resulting in an implied value of platform="A B".
For the second topicref - does this already merged value "A B" cascade? Or does the "nomerge" token mean that only the most recent (unmerged) value "B" cascades? One of these must be true (@cascade does not turn off the cascade entirely, it only controls whether cascading values merge or not).
I think that the already-merged value cascades to this topicref. Essentially, the meaning of the cascade is that the first topicref applies to both platform A and platform B. It is equivalent to having an explicit setting of platform="A B" on that element. Thus, I think that once the cascading is calculated, the sample above is equivalent to the following:
<map platform="A" cascade="merge">
<topicref platform="A B">
<topicref platform="A B" cascade="nomerge">
In other words, the algorithm here is essentially:
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]