if-var

Traitement conditionnel (permet de tester une valeur de variable)

Description

Les éléments enfants de cet élément (à l'exception des éléments forced-attribute qui sont toujours traités) seront traités uniquement lorsque la condition sera remplie.

Attributs

  • async (booléen Valeur par défaut : true) - Traitement asynchrone. Pour les balises d'analyse, indique si la demande doit être ajoutée à la file d'attente (false) ou traitée avant l'élément apparenté suivant. Pour les autres éléments, cet attribut ne fait la différence que s'ils contiennent des demandes asynchrones qui doivent être traitées avant le traitement de l'élément. Dans ce cas, lorsque l'attribut est défini sur false, l'élément apparenté suivant de l'élément ne sera traité qu'après l'élément en cours ; lorsqu'il est défini sur true, Watson Explorer n'attend pas que l'élément en cours soit traité avant de traiter son élément apparenté suivant.
  • elt-id (entier) - Utilisation : Interne
  • max-elt-id (entier) - Utilisation : Interne
  • execute-acl (Texte)
  • process (Texte) - Expression XPath qui détermine les attributs et/ou les enfants à traiter. Seuls "", "*", "@*" et "*|@*" sont actuellement pris en charge.
  • name (NMToken)
  • realm (var, param, state-param, option, env, cookie ou post-data Valeur par défaut : var) -
    • var : Teste/récupère la valeur d'une variable déclarée.
    • param : Teste/récupère la valeur d'un paramètre CGI.
    • state-param : Teste/récupère la valeur d'un paramètre state.
    • option : Teste/récupère la valeur d'une option.
    • env : Teste/récupère la valeur d'une variable d'environnement.
    • cookie : Teste/récupère la valeur d'un cookie.
    • post-data : La variable nommée post-data dans ce domaine contient les données brutes de n'importe quelle donnée POST.
  • multi-sep (Texte) - Lors de l'obtention de la valeur d'un paramètre doté de plusieurs valeurs, il est possible d'obtenir la concaténation de toutes ces valeurs à l'aide de la chaîne spécifiée par cet attribut en tant que séparateur.
  • encoding (Texte) - Pour les domaines env et www, la variable n'est pas nécessairement UTF-8. Pour être traitée, elle doit prendre la valeur UTF-8 et peut éventuellement avoir besoin d'être convertie en spécifiant le codage source (jeu de caractères) approprié.
  • how (wc, wc-set, regex, cregex, case-insensitive-regex, perl-regex ou case-insensitive-perl-regex) - Utilisation : cette fonctionnalité est obsolète
  • match-type (wc, wc-set, regex, cregex, case-insensitive-regex, perl-regex ou case-insensitive-perl-regex Valeur par défaut : wc-set) - Type de correspondance.
  • match ( Forme restreinte de xs:string Valeur par défaut : ?*) - Lorsque ce modèle est mis en correspondance par la variable, la condition est remplie.
  • not-match ( Forme restreinte de xs:string) - Lorsque ce modèle n'est PAS mis en correspondance par la variable, la condition est remplie.

Exemples

Exemple d'entrée :

  <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>

Exemple de sortie :

  <_xml_>matched</_xml_>
  <_xml_>regex matched</_xml_>
  <_xml_>xpath matched</_xml_>
  <declare name="v" initial-value="1"/>
Les variables des autres domaines peuvent également être testées.

Exemple d'entrée :

  <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>

Exemple de sortie :

  <param name="v" value="1"/>
  <_xml_>matched</_xml_>
  <option name="tmp_dir" value="/tmp"/>
Les attributs peuvent ne pas être appliqués directement aux éléments qui conditionnent le traitement de leur contenu (par exemple if-var, when-var, etc). Dans ce cas, l'attribut non correspondant n'est pas ajouté à if-var avant d'être traité (le test est donc transmis). Utilisez forced-attribute si vous souhaitez forcer le traitement de l'attribut auparavant.

Exemple d'entrée :

  <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>

Exemple de sortie :

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

Exemple d'entrée :

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

Exemple de sortie :

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