次のxmlファイルがあるとしましょう:
<jobs>
<job>
<PositionTitle>Painter</PositionTitle>
<InternalOrExternal>External</InternalOrExternal>
</job>
<job>
<PositionTitle>Plumber</PositionTitle>
<InternalOrExternal>Internal</InternalOrExternal>
</job>
<job>
<PositionTitle>Chemist</PositionTitle>
<InternalOrExternal>Internal</InternalOrExternal>
</job>
<job>
<PositionTitle>Teacher</PositionTitle>
<InternalOrExternal>External</InternalOrExternal>
</job>
</jobs>
.
外部ジョブのみを表示するために、次の xslt で処理します。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:content="http://purl.org/rss/1.0/modules/content/" >
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:for-each select="jobs/job">
<xsl:if test="InternalOrExternal = 'External'"><!-- Only show external jobs -->
<xsl:value-of select="PositionTitle"/> - <xsl:value-of select="position()"/><br />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
これは次のようになります。
Painter - 1
Teacher - 4
position() 関数は xml ファイル内の実際の位置を返し、一部のジョブを除外する可能性のある if ステートメントは考慮されていないと思います。この場合、内部ジョブは除外されますが、そのポジションは引き続きカウントされます。
私が望む結果は次のとおりです。
Painter - 1
Teacher - 2
position() 関数を取得して、表示するものだけをカウントする方法はありますか?
私は運がないのでこれを試しました:
<xsl:value-of select="position(jobs/job[InternalOrExternal='External'])"/>