Comment je peux vérifier avec xpath si e la valeur du nœud est le nombre?
Des idées?
Comment je peux vérifier avec xpath si e la valeur du nœud est le nombre?
Des idées?
Test de la valeur par rapport à NaN:
<xsl:if test="string(number(myNode)) != 'NaN'">
<!-- myNode is a number -->
</xsl:if>
C'est une version plus courte (merci @Alejandro):
<xsl:if test="number(myNode) = myNode">
<!-- myNode is a number -->
</xsl:if>
Le plus court chemin possible de tester si la valeur contenue dans une variable $v
peut être utilisé comme un nombre est:
number($v) = number($v)
Vous avez seulement besoin de remplacer le $v
- dessus avec l'expression dont la valeur que vous voulez tester.
Explication:
number($v) = number($v)
est évidemment vrai, si $v
est un nombre ou une chaîne de caractères qui représente un nombre.
Il est vrai également pour une valeur booléenne, parce qu'un number(true())
est 1 number(false)
est de 0.
Chaque fois qu' $v
ne peut pas être utilisé comme un nombre, alors number($v)
est NaN
et NaN n'est pas égale à toute autre valeur, même à lui-même.
Ainsi, l'expression ci-dessus est vrai que pour $v
dont la valeur peut être utilisé comme un certain nombre, et false sinon.
Je ne suis pas en essayant de fournir une encore une autre solution de rechange, mais un "méta-vue" à ce problème.
Les réponses déjà fournies par Oded et Dimitre Novatchev sont corrects mais ce que les gens pourraient dire avec l'expression "la valeur est un nombre" est, comment pourrais-je le dire, ouverte à l'interprétation.
En un sens, tout vient à cette étrange consonance question: "comment voulez-vous exprimer vos valeurs numériques?"
Fonction XPath number()
des numéros de processus qui ont
Notez que ceci n'inclut pas les expressions pour les valeurs numériques que
Ce ne sont pas seulement composée de critères. Un élément avec un contenu qui est selon un schéma valide xs:float
de la valeur peut contenir les caractéristiques mentionnées ci-dessus. Pourtant, number()
serait de retour la valeur NaN
.
Donc la réponse à votre question "Comment je peux vérifier avec XPath si un nœud de valeur est le nombre?" est "Utilisez déjà mentionné solutions à l'aide d' number()
" ou "avec une seule expression XPath 1.0, vous ne pouvez pas". Pensez au nombre de formats que vous pourriez rencontrer, et si nécessaire, écrire une sorte de logique de validation/numéro de l'analyse. Dans XSLT, ce qui peut être fait avec quelques adapté modèles supplémentaires, par exemple.
PS. Si vous ne se soucient non-zéro, les nombres, le test est plus court
<xsl:if test="number(myNode)">
<!-- myNode is a non-zero number -->
</xsl:if>
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.