Question

Quelque chose comme .// div [@ id = 'foo \ d +] pour capturer les balises div avec id =' foo123 '.

J'utilise .NET, si cela compte.

Était-ce utile?

La solution

Comme d'autres réponses l'ont noté, XPath 1.0 ne prend pas en charge les expressions régulières .

Vous disposez néanmoins des options suivantes :

.//div
   [starts-with(@id, 'foo') 
  and 
   'foo' = translate(@id, '0123456789', '')
  and
   string-length(@id) > 3   
   ]

Autres conseils

XPath 2.0 possède certaines fonctions qui prennent en charge les expressions régulières: matches () , replace () , tokenize () .

Dans XPath 1.0, il n’existe pas de support regex.

Pour .NET, vous pouvez utiliser le moteur XPath de Saxon.Net pour prendre en charge XPath 2.0.

Ainsi, si vous utilisez le moteur XPath 2.0 dans Saxon.NET, votre exemple deviendrait: .// div [correspond (@ id, 'foo \ d +')] .

Sous .NET, vous avez la possibilité d’accéder à vos classes personnalisées (et donc aux regex si vous pouvez les coder correctement pour vos besoins) via des objets Extension.

Didacticiel ici .

Je voulais aussi faire cela, j'ai donc créé mon propre module xpath .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top