次のような 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 を使用して、xref 要素を個別に照合していました。
<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 の親の属性を、子要素で一致させるのと同じ方法で一致させることはできませんか?
ありがとう!