Accéder au contenu principal Passer au contenu complémentaire

Retourner des valeurs basées sur des rapprochements d'expressions régulières

Utilisez une fonction IfThenElse avec une fonction Matches afin de définir une valeur de sortie dépendant du modèle d'une valeur d'entrée.

Avant de commencer

Vous avez créé une map avec une structure d'entrée et de sortie. Vous pouvez utiliser les échantillons fournis ci-dessous.

Pourquoi et quand exécuter cette tâche

Dans cet exemple, un fichier XML contient des informations de contact. Vous souhaitez vérifier que les éléments state et phone correspondent à un modèle spécifique et indiquer si un contact est valide ou invalide, à l'aide d'un attribut. Vous pouvez utiliser l'échantillon XML suivant en entrée :
<contacts>
	<contact>
		<lastName>Harrison</lastName>
		<firstName>Jane</firstName>
		<street>French Camp Turnpike Road</street>
		<zipCode>30316</zipCode>
		<city>Atlanta</city>
		<state>Georgia</state>
		<phone>(678)123-4567</phone>
	</contact>
	<contact>
		<lastName>Johnson</lastName>
		<firstName>Katherine</firstName>
		<street>Santa Rosa South</street>
		<zipCode>85162</zipCode>
		<city>Phoenix</city>
		<state>AZ</state>
		<phone>(602)789-0123</phone>
	</contact>
	<contact>
		<lastName>Monroe</lastName>
		<firstName>Martin</firstName>
		<street>N Kentwood</street>
		<zipCode>32315</zipCode>
		<city>Tallahassee</city>
		<state>FL</state>
		<phone>(805) 456-7890</phone>
	</contact>
</contacts>
Vous pouvez utiliser l'échantillon XML suivant pour créer votre structure de sortie :
<contacts>
	<contact status="">
		<lastName/>
		<firstName/>
		<street/>
		<zipCode/>
		<city/>
		<state/>
		<phone/>
	</contact>
	<contact status="">
		<lastName/>
		<firstName/>
		<street/>
		<zipCode/>
		<city/>
		<state/>
		<phone/>
	</contact>
</contacts>

Procédure

  1. Glissez-déposez l'élément d'entrée contact sur la sortie correspondante afin de mapper les éléments enfants.
  2. Glissez-déposez la fonction IfThenElse sur l'attribut status de sortie.
  3. Glissez-déposez une fonction And sur l'attribut Condition, puis glissez-déposez deux fonctions Matches sur la fonction And.
  4. Glissez-déposez l'élément d'entrée state sur l'argument Input Value de la première fonction Matches et l'élément d'entrée phone sur la seconde.
  5. Double-cliquez sur la fonction Matches associée à l'élément state, puis saisissez ^[A-Z]{2}$ dans le champ Regex Value. Cochez la case Case sensitive et cliquez sur OK.
    Cela indique que la valeur de l'élément state doit être composée de deux lettres capitales.
  6. Double-cliquez sur la fonction Matches associée à l'élément phone, saisissez ^\(\d{3}\)\d{3}-\d{4}$ dans le champ Regex Value, puis cliquez sur OK.
    Cela indique que la valeur de l'élément phone doit être composée de trois chiffres entre parenthèses, suivis de trois chiffres, d'un tiret et de quatre chiffres.
  7. Glissez-déposez une fonction Constant sur l'argument Then, double-cliquez dessus et saisissez valid dans le champ Value, puis cliquez sur OK.
  8. Glissez-déposez une fonction Constant sur l'argument Else et configurez sa valeur à invalid, puis cliquez sur OK.

Résultats

Votre map est configurée. L'attribut status de l'élément contact est valid (valide) si l'État (state) et le numéro de téléphone (phone number) correspondent aux modèles définis. Sinon, la valeur est invalid.
Vous pouvez utiliser la fonctionnalité Test Run pour voir le résultat. Dans cet exemple, la sortie suivante est retournée :
<contacts>
  <contact status="invalid">
    <lastName>Harrison</lastName>
    <firstName>Jane</firstName>
    <street>French Camp Turnpike Road</street>
    <zipCode>30316</zipCode>
    <city>Atlanta</city>
    <state>Georgia</state>
    <phone>(678)123-4567</phone>
  </contact>
  <contact status="valid">
    <lastName>Johnson</lastName>
    <firstName>Katherine</firstName>
    <street>Santa Rosa South</street>
    <zipCode>85162</zipCode>
    <city>Phoenix</city>
    <state>AZ</state>
    <phone>(602)789-0123</phone>
  </contact>
  <contact status="invalid">
    <lastName>Monroe</lastName>
    <firstName>Martin</firstName>
    <street>N Kentwood</street>
    <zipCode>32315</zipCode>
    <city>Tallahassee</city>
    <state>FL</state>
    <phone>(805) 456-7890</phone>
  </contact>
</contacts>

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !