if-var

条件付き処理 (変数値をテストします)。

説明

この要素の子要素 (常に処理される forced-attribute 要素を除く) は、条件が満たされた場合にのみ処理されます。

属性

  • async (ブール デフォルト: true) - 非同期処理。 解析タグの場合、次の兄弟の前に要求をエンキューするのか (false)、処理するのか。 他の要素の場合、要素を処理する前に処理する必要がある非同期要求が含まれている場合にのみ、この属性は意味を持ちます。 その際、false の場合、要素の次の兄弟は、現行要素の後にのみ処理されます。true の場合、Watson™ Explorer は現行要素が処理されるのを待たずに、次の兄弟を処理します。
  • elt-id (整数) - 使用法: 内部
  • max-elt-id (整数) - 使用法: 内部
  • execute-acl (テキスト)
  • process (テキスト) - 処理される属性または子、あるいはその両方を決定する XPath。現在、「」、「*」、「@*」、および「*|@*」のみがサポートされます。
  • name (NMToken)
  • realm (以下のいずれか: var、param、state-param、option、env、cookie、post-data デフォルト: var) -
    • var: 宣言された変数の値をテスト/取得します。
    • param: CGI パラメーターの値をテスト/取得します。
    • state-param: 状態パラメーターの値をテスト/取得します。
    • option: オプションの値をテスト/取得します。
    • env: 環境変数の値をテスト/取得します。
    • cookie: Cookie の値をテスト/取得します。
    • post-data: このレルムの post-data という名前の変数には、POST データのロー・データが含まれます。
  • multi-sep (テキスト) - 複数の値が含まれているパラメーターの値を取得する際に、この属性で指定したストリングを区切り文字として使用して、そのすべての値を連結したものを取得できます。
  • encoding (テキスト) - レルム env および www では、変数は必ずしも UTF-8 とは限りません。処理するには UTF-8 でなければならないため、正しいソース・エンコード (文字セット) を指定して変換する必要が生じることがあります。
  • how (以下のいずれか: wc、wc-set、regex、cregex、case-insensitive-regex、perl-regex、case-insensitive-perl-regex) - 使用法: この機能は非推奨です
  • match-type (以下のいずれか: wc、wc-set、regex、cregex、case-insensitive-regex、perl-regex、case-insensitive-perl-regex デフォルト: wc-set) - マッチングのタイプ。
  • match (xs:string の制限形式 デフォルト: ?*) - このパターンが変数に一致すると、条件が満たされます。
  • not-match (xs:string の制限形式) - このパターンが変数に一致しなかった場合、条件が満たされます。

Input Example:

  <declare name="v" initial-value="1"/>
  <if-var name="v" match="1*">
  <_xml_>matched</_xml_>
  </if-var>
  <if-var name="v" not-match="1*">
  <_xml_>not matched</_xml_>
  </if-var>
  <if-var name="v" match="[0-9]+" match-type="regex">
  <_xml_>regex matched</_xml_>
  </if-var>
  <if test="$v &gt; 0">
  <_xml_>xpath matched</_xml_>
  </if>

出力例:

  <_xml_>matched</_xml_>
  <_xml_>regex matched</_xml_>
  <_xml_>xpath matched</_xml_>
  <declare name="v" initial-value="1"/>
他のレルム内の変数もテストできます。

Input Example:

  <param name="v" value="1"/>
  <if-var name="v" match="1*" realm="param">
  <_xml_>matched</_xml_>
  </if-var>
  <option name="tmp_dir" value="/tmp"/>
  <if-var name="tmp_dir" match="1*" realm="option">
  <_xml_>not_matched</_xml_>
  </if-var>

出力例:

  <param name="v" value="1"/>
  <_xml_>matched</_xml_>
  <option name="tmp_dir" value="/tmp"/>
属性は、コンテンツの処理を条件付ける要素 (if-var、when-var など) に直接適用できません。その場合、not-match 属性は、処理される前に、if-var に追加されません (そのため、テストにパスします)。属性を前に処理するように強制する場合は、forced-attribute を使用します。

Input Example:

  <declare name="v1"/>
  <declare name="v2"/>
  <set-var name="v1">1</set-var>
  <set-var name="v2">
  <if-var name="v1">
  <attribute name="not-match">?*</attribute>
  <scope>bad</scope>
  </if-var>
  </set-var>
  <set-var name="v1">1</set-var>
  <set-var name="v2">
  <if-var name="v1">
  <attribute name="not-match">?*</attribute>
  <scope>bad</scope>
  </if-var>
  </set-var>

出力例:

  <declare name="v1" initial-value="1" modified="modified"/>
  <declare name="v2" initial-value="bad" modified="modified"/>

Input Example:

  <declare name="v" initial-value="v1"/>
  <if-var name="v">
  <forced-attribute name="match" value="v1"/>
  <bingo/>
  </if-var>

出力例:

  <bingo/>
  <declare name="v" initial-value="v1"/>