有几个包含主题元素的xml文档,只有一个文件包含一个属性为product =“ OPTION”的主题元素。
如果要为主题设置属性,我想编写OPTION;如果主题的属性不存在,我想编写TOTO。
问题是,实际上,如果至少一个文件包含属性product =“ OPTION” OPTION,则会在每个生成的pdf页面上写入。
<xsl:template name="insertBodyEvenHeader">
<xsl:param as="xs:string" name="flow-name" select="'even-body-header'" />
<fo:static-content flow-name="{$flow-name}">
<fo:block xsl:use-attribute-sets="__body__even__header">
<xsl:choose>
<xsl:when test="topic/@product='OPTION'">
<fo:inline xsl:use-attribute-sets="title__option">
<xsl:text>OPTION</xsl:text>
</fo:inline>
</xsl:when>
<xsl:otherwise>TOTO</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:static-content>
</xsl:template>
您是否愿意帮助我应对该考试?谢谢,谢谢。
答案 0 :(得分:0)
此模板的上下文可能超出主题范围(这很有意义,因为您在topic / @ product上进行了测试)。这就是为什么如果您有10个主题元素,而有一个@ product ='OPTION'则WHEN为true。
如果是这样,并且您想测试当前正在输出的主题,则可以在标题中使用retrieve-marker
,然后在主题模板中创建标记,并将这些标记拉到标题中。
您的选择将变成@product(因为您位于主题模板中),并且只需放入一个fo:marker
即可选择的内容,然后使用fo:retrieve-marker
和一些{{1} },具体取决于您希望如何处理它们。如果某个主题总是开始一个页面,那么您将使用retrieve-position
。