我有这本书的地图:
<?xml version="1.0" encoding="utf-8"?>
<bookmap>
<part>
<chapter/>
<chapter/>
<chapter/>
</part>
<part/>
<part/>
<part/>
<part/>
<appendix/>
</bookmap>
我想放置模板,xsl:if命令取决于元素是part/chapter
还是part
。
即。我在模板processTopicTitle
中有这些,这是DITA-OT发行版的一部分:
<xsl:if test="bookmap/part/chapter">
<fo:external-graphic src="thisischapter.png" />
</xsl:if>
<xsl:if test="bookmap/part">
<fo:external-graphic src="thisispart.png" />
</xsl:if>
这不起作用。
这个想法是有一个图形只显示在部分/章节中,而另一个只显示部分。
答案 0 :(得分:2)
你需要做的是这样的事情:
<xsl:choose>
<!-- parts -->
<xsl:when test="$map//*[contains(@class, ' bookmap/part ')]">
<xsl:call-template name="getVariable">
<xsl:with-param name="id" select="'First Cover Image Path'"/>
</xsl:call-template>
</xsl:when>
<!-- chapters -->
<xsl:when test="$map//*[contains(@class, ' bookmap/chapter ')]">
<xsl:call-template name="getVariable">
<xsl:with-param name="id" select="'Second Cover Image Path'"/>
</xsl:call-template>
</xsl:when>
<!-- parts without chapters -->
<xsl:when test="$map//*[contains(@class, ' bookmap/part ')][not(child::*[contains(@class, ' bookmap/chapter ')])">
<xsl:call-template name="getVariable">
<xsl:with-param name="id" select="'Third Cover Image Path'"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
您应该在配置文件~/cfg/common/vars/en.xml
你应该阅读:
<强>更新强>
要放置图片,您应该使用placeImage
模板:
<xsl:apply-templates mode="placeImage" select=".">
<xsl:with-param name="imageAlign" select="@align"/>
<xsl:with-param name="href"
select="
if (@scope = 'external' or opentopic-func:isAbsolute(@href)) then
@href
else
concat($input.dir.url, @href)"/>
<xsl:with-param name="height" select="@height"/>
<xsl:with-param name="width" select="@width"/>
</xsl:apply-templates>
使用dita-generator生成插件很有帮助,设置自定义封面图片,然后将您的代码与生成的插件的代码进行比较。
答案 1 :(得分:0)
我让它像这样工作:
<xsl:template name="insertDiamond">
<xsl:variable name="topicref" select="key('map-id', ancestor-or-self::*[contains(@class,' topic/topic ')][1]/@id)"/>
<xsl:choose>
<xsl:when test="$topicref//ancestor-or-self::*[contains(@class, ' bookmap/part ')][not(child::*[contains(@class, ' bookmap/chapter ')])]">
<!--Put actions here for parts without any chapters as childs-->
</xsl:when>
<xsl:otherwise>
<!--Put actions here for the rest.-->
</xsl:otherwise>
</xsl:choose>
</xsl:template>