我有这样的内容:
<sect1>
<title>Leiblichkeit und Verkörperung</title>
<sect2>
<title>Leiblichkeit und Verkörperung</title>
<para>
.......
</para>
</sect2>
<sect2>
<title>Leiblichkeit und Verkörperung</title>
<para>
.......
</para>
</sect2>
</sect1>
我希望匹配并应用sect2
title
的属性,如果它继续sect1
为“below_2_head”
我试过了:
<xsl:template match="title">
<xsl:copy>
<xsl:if test="parent::sect1"><xsl:attribute name="aid:pstyle">1_head</xsl:attribute></xsl:if>
<xsl:if test="parent::sect2"><xsl:attribute name="aid:pstyle"><xsl:if test="parent::sect2/preceding-sibling::title">below_</xsl:if>2_head</xsl:attribute></xsl:if>
<xsl:apply-templates select="*|@*|comment()|processing-instruction()|text()"/>
</xsl:copy>
</xsl:template>
我希望输出为:
<sect1>
<title aid:pstyle="1_head">Leiblichkeit und Verkörperung</title>
<sect2>
<title aid:pstyle="below_2_head">Leiblichkeit und Verkörperung</title>
<para>
.......
</para>
</sect2>
<sect2>
<title aid:pstyle="2_head">Leiblichkeit und Verkörperung</title>
<para>
.......
</para>
</sect2>
</sect1>
答案 0 :(得分:2)
我怀疑问题在这里:
<xsl:if test="parent::sect2/preceding-sibling::title">
对于示例文档中sect2
元素的,情况都是如此,因为它们都有某些之前的兄弟元素{{1} }。您实际需要检查的只是立即前面的兄弟元素,以查看该元素是否是标题:
title