我有一些看起来像这样的 XML:
<section class="DoCO:Section">
<h1 class="DoCO:SectionTitle" id="42" page="3" column="2">EXPERIMENT</h1>
<region class="DoCO:TextChunk" id="43" page="3" column="2">lots of body<xref ref-type="bibr" rid="R7" id="35" class="deo:Reference">7</xref> text</region>
<region class="DoCO:FigureBox" id="F4">
<image class="DoCO:Figure" src="2cn.page_003.image_04.png" thmb="2cn.page_003.image_04-thumb.png"/>
<caption class="deo:Caption" id="44" page="3" column="2">Figure 4: Experimental Setup</caption>
</region>
我一直在使用以下 XSL 来单独匹配外部参照元素:
<xsl:for-each select="article/body/section">
<sec>
<xsl:for-each select="h1">
<title>
<xsl:value-of select="string(.)"/>
</title>
</xsl:for-each>
<xsl:for-each select="region">
<p>
<xsl:apply-templates/>
</p>
</xsl:for-each>
</xsl:template>
<xsl:template match="xref">
<xref/>
</xsl:template>
但是,我希望能够在给定区域内将图像和标题元素组合在一起,而无需更改当前处理区域元素的非常开放的方式,因此我正在尝试执行以下操作:
<xsl:template match="@class[.='DoCO:FigureBox']">
<fig xmlns:xlink="http://www.w3.org/1999/xlink">
<graphic>
<xsl:for-each select="image">
<xsl:attribute name="xlink:href">
<xsl:value-of select="@src"/>
</xsl:attribute>
</xsl:for-each>
</graphic>
<caption>
<xsl:for-each select="caption">
<xsl:value-of select="string(.)"/>
</xsl:for-each>
</caption>
</fig>
</xsl:template>
但是 match="@class[.='DoCO:FigureBox']" 似乎没有被触发。是否不可能像匹配子元素一样匹配 xsl:apply-templates 的父级属性?
谢谢!