On 10/09/2015 11:37 AM, Ignacio García Soblechero wrote:
Hello,

I'm rebuilding my product's documentation so it's better structured. For
this reason, Where I had one sublevel of ditamaps and every conditional
processing attibute in each topic, now I'm having two or even three
levels of ditamaps and some of the conditional attributes (I use mainly
audience, although others may be used later) are moved to the ditamap,
so I can exclude or include several files (the corresponding branch of
the index tree) with only one declaration.

I'm having problems with this workaround. Here I give you an example of
something that doesn't work as I expect:

map1.ditamap:
...
<topicref format="ditamap" href="map2.ditamap"/>
...

map2.ditamap:
...
<topicref format="ditamap" href="map3.ditamap" audience="role1 role2"/>
...

map3.ditamap:
...
<topicref href="topic.dita" audience="role3"/>
...

val.ditaval:
...
<prop action="include" att="audience" val="role1"/>
<prop action="include" att="audience" val="role2"/>
<prop action="exclude" att="audience" val="role3"/>
...

I suppose this example should work as follows:

 1. ditac processes map1.ditamap. It finds map2.ditamap, that hasn't got
    any conditional processing attributes, so it reads it.
 2. ditac processes map2.ditamap. It finds map3.ditamap, that has a
    conditional processing attribute, audience, with values role1 and
    role2. As both values are included in val.ditaval, it reads
    map3.ditamap (this would work also if only one of the values were
    included and the rest excluded).
 3. ditac processes map3.ditamap. It finds topic.dita, that has a
    conditional processing attribute, audience, with value role3. This
    value is excluded in val.ditaval, so it should be not processed.
    Here lies my problem: it is processed.

Is there any failure in my example? Have I forgotten anything? Is there
any bug there? I can't find where's the problem.


I would say that ditac is conforming to the DITA spec in the above use case.

The "audience" attribute is additive and cascade from map to map. See

2.1.2.3.5 Map-to-map cascading behaviors

http://docs.oasis-open.org/dita/v1.2/os/spec/archSpec/map-to-map-cascading-of-metadata.html#map-to-map-cascading-of-metadata

Therefore by specifying:

---
<topicref format="ditamap" href="map3.ditamap" audience="role1 role2"/>
---

and in map3.ditamap:

---
<topicref href="topic.dita" audience="role3"/>
---

You end up with the equivalent of:

---
<topicref href="topic.dita" audience="role1 role2 role3"/>
---

Hence topic.dita is included by ditac in the realized document.


--
XMLmind DITA Converter Support List
[email protected]
http://www.xmlmind.com/mailman/listinfo/ditac-support

Reply via email to