For the conditions, the normal Open Toolkit filtering with ditaval is used.
@otherprops="slide"
is explicitly included in the PPT and implicitly included in PDF.@audience="instructor"
is explicitly included in the PPT and explicitly excluded from PDF.@otherprops="noslide"
is explicitly excluded from PPT and implicitly included in PDF.
The question of element selection and mapping is a bit more complicated. First, the PPT template has three bullet levels defined. The first is meant for unbulleted items, for example learning objectives lead in. The second is meant for bulleted and numbered items, for example step and li elements. The third is meant for command and output references, for example codeblock and msgblock.
In the PPT utility, XPath expressions are mapped to one of these three paragraph styles or to an object.
XPath expression | PPT mapping |
---|---|
$t//ph[$s] |
P1 unbulleted |
$t//p[$s] |
P1 unbulleted |
$t//*[$s]/li |
P2 bulleted |
$t//sl[$s]/sli |
P2 unbulleted |
$t//dl[$s]/dlentry/dt |
P2 bulleted |
$t//codeblock[$s] |
P3 fixed-width |
$t//msgblock[$s] |
P3 fixed-width |
$t//steps[$s]/step/cmd |
P2 numbered |
$t//steps[$s]/step/info/codeblock |
P3 fixed-width |
$t//fig/image/@href |
image object |
$t//image/@href |
image object |
$t//note[contains(@audience,'instructor')] |
note object |
$t//lcObjectivesStem |
P1 unbulleted |
$t//lcObjectivesGroup//lcObjective |
P2 bulleted |
$t//table[$s] |
table object |
$t//simpletable[$s] |
table object |
The variables $t and $s are also XPath expressions that I put into variables to keep the other expressions legible:
$t = "child::*[contains(@class, ' topic/body ')]"
$s = "contains(@otherprops, 'slide')"
Edit: correction on filtering logic.