1

次の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'])"/>
4

2 に答える 2