如何根据祖先的属性选择祖先

时间:2010-05-21 14:46:34

标签: xslt

我是新手,所以请耐心等待......

我需要根据模板匹配非常简单地修改内容:    主题/体/部分/标题

此模板匹配正常。但是,我只需要在topic元素的title元素值为“Preface”时才需要这样做。

有人可以帮忙解决问题吗?

以下是代码:

<topic>
  <title>Preface</title>
  <body>
    <p>This publication was written for...</p>
    <section>
      <title>Publication Information/Version</title>

这是xslt:

<xsl:template match="topic/body/section/title">
        <fo:block xsl:use-attribute-sets="prefacetitle" 
            keep-with-next.within-page="always" 
            keep-together.within-column="always" 
            color="{$docColor}">
            <!--<fo:marker marker-class-name="title-marker"><xsl:value-of select="normalize-space(.)"/></fo:marker>-->
            <xsl:apply-imports/>
        </fo:block>
    </xsl:template>

<xsl:attribute-set name="prefacetitle" >
        <xsl:attribute name="font-family">Trebuchet MS</xsl:attribute>
        <xsl:attribute name="font-size">28pt</xsl:attribute>
        <xsl:attribute name="font-weight">bold</xsl:attribute>
        <xsl:attribute name="margin-bottom">9pt</xsl:attribute>
        <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
    </xsl:attribute-set>

此代码有效,但我只希望它在具有主题/标题的祖先[text()='Preface']时修改节/标题。

有意义吗?

1 个答案:

答案 0 :(得分:2)

没有代码就很难说出你想要的东西,但也许是这样的:

<xsl:template match="topic[title/text()='Preface']/body/section/title" >

如果没有,请澄清你的问题。