1

xsl 変数に含まれる単語が 1 つだけなのか、コンマで区切られた複数の単語が xslt に含まれているのかをテストする必要があります。

変数は動的であるため、URL クエリ文字列にマップされるパラメーターであり、次のようになります。

index.aspx?role=manager

また

index.aspx?role=manager,director

XSLT では、$role パラメーターが 1 つの単語なのか、コンマで区切られた複数の単語なのかを調べる必要があります。複数の単語の場合、各単語を抽出し、次のような単語に基づいて xslt フィルタリングを行う必要があります

/rows/row[role=extractedWord[1] or role = extractedWord[2]

マネージャーまたはディレクターの役割に一致する行のみが返されるようにします。

これは可能ですか?

更新:次のようなフィルターがあります。

<xsl:variable name="AllPerRole" select="/dsQueryResponse/Rows/Row[contains(@EmployeeRoles,$Role)]" />

上記のように role の値が 1 つだけの場合は正常index.aspx?role=managerに機能します。しかし、役割がこれらのような複数の単語である場合、 index.aspx?role=manager,director その文字列「マネージャー、CEO」を抽出して、次のことができるようにする必要があります。

<xsl:variable name="AllPerRole" select="/dsQueryResponse/Rows/Row[contains(@EmployeeRoles,$Role{firstRole}) or contains(@EmployeeRoles,$Role{2ndRole})]" />

4

1 に答える 1

1

次のように、$Role の最初のロールの変数を設定できます。

<xsl:variable name="Role1">
  <xsl:choose>
    <xsl:when test="contains($Role, ',')">
      <xsl:value-of select="substring-before($Role, ',')"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$Role" />
    </xsl:otherwise>
  <xsl:choose>
</xsl:variable>

substring-after()次に、代わりにを使用して、2 番目のロール (存在する場合) の変数 Role2 を設定しますsubstring-before()

それで:

<xsl:variable name="AllPerRole"
    select="/dsQueryResponse/Rows/Row[
     contains(@EmployeeRoles,$Role1) or contains(@EmployeeRoles,$Role2)]" />
于 2013-08-29T19:28:56.383 に答える