[[TranslatedPages(revision=41)]] Ce vérificateur d'attributs est considéré comme le successeur de `tagchecker.cfg` et utilise une grande partie de la [wikitr:/Help/Styles/MapCSSImplementation Mise en œuvre de MapCSS pour les feuilles de style]. L'extension officielle des fichiers est `*.validator.mapcss`. Pensez à installer le ​[https://marketplace.visualstudio.com/items?itemName=whammo.mapcss-syntax MapCSS Syntax Highlighter (en)] dans VS Code pour ajouter une mise en évidence visuelle de MapCSS paint et de la syntaxe du validateur. Les tests de validation plus complexes, qui ne peuvent être réalisés avec cette syntaxe, sont réalisés en tant que [source:/trunk/src/org/openstreetmap/josm/data/validation/tests tests Java (en)]. == Exemples == Voir les fichiers `*.mapcss` dans le [source:/trunk/resources/data/validator/ validateur] pour les contrôles inclus dans le noyau de JOSM ou les [wikitr:/Rules règles externes du validateur]. {{{ #!mapcss *[barrier=wire_fence] { throwWarning: tr("{0} is deprecated", "{0.tag}"); /* "{0.tag}" evaluates to "barrier=wire_fence" */ fixAdd: "barrier=fence"; /* Vous n'avez pas besoin de supprimer préalablement la clé de barrière, elle sera simplement remplacée par la nouvelle valeur */ fixAdd: "fence_type=chain_link"; assertMatch: "way barrier=wire_fence"; assertNoMatch: "way barrier=fence"; } }}} utilisation des classes : {{{ #!mapcss way[highway=~/^(motorway|trunk|primary|secondary|tertiary)$/] { set major_road; } way.major_road[!ref] { throwOther: tr("highway without {0}", "{1.key}"); /* la classe ".major:road" est le 0ème sélecteur et "!ref" est le 1er sélecteur. La sortie est : "highway sans ref" */ assertMatch: "way highway=primary"; assertNoMatch: "way highway=primary ref=123"; } }}} == Quelques précisions == === Syntaxe === {{{ #!mapcss selector { /* exactement l'un des éléments suivants */ throwError: "message"; throwWarning: "message"; throwOther: "message"; /* arbitrairement beaucoup de */ fixAdd: "key=val"; fixRemove: "key"; fixChangeKey: "old=>new"; fixDeleteObject: this; /* supprime tout l'objet ! */ suggestAlternative: "any text (e.g., alternative key)"; /* les arguments définis par l'utilisateur doivent être préfixés par - */ -osmoseItemClassLevel: "1210/1/1"; /* assertions pour les tests unitaires */ assertMatch: "node/way/relation key1=value1 keyN=valueN"; assertNoMatch: "node/way/relation key1=value1 keyN=valueN"; /* les assertions comportant des espaces, utilisez \"...\" autour de la valeur */ assertNoMatch: "node amenity=recycling collection_times=\"Mo-Fr 15:00\""; } }}} * La syntaxe des sélecteurs est spécifiée dans [wikitr:/Help/Styles/MapCSSImplementation#Selectors Mise en œuvre de MapCSS : Sélecteurs] * Les règles du validateur peuvent être limitées à des pays spécifiques, voir [wikitr:/Help/Styles/MapCSSImplementation#Territoryselector Mise en œuvre de MapCSS : Sélecteur de territoire]. * Contrairement aux chaînes de caractères du côté droit de ces expressions, les expressions sont évaluées (voir [wikitr:/Help/Styles/MapCSSImplementation#Evalexpressions liste+syntaxe]) * Le plus utile de tous est [/doc/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.html#tr-org.openstreetmap.josm.gui.mappaint.Environment-java.lang.String...- tr()] afin de faire traduire ces chaînes (CLARIFIER : où les traductions pour les règles de validation non essentielles doivent être maintenues ?) * Si au moins un parmi `fixAdd`/`fixRemove` ou `fixChangeKey` est spécifié, ces changements sont exécutés pour les objets correspondant à ce test lorsque vous appuyez sur le bouton ''Réparer'' du [wikitr:/Help/Dialog/Validator panneau du validateur]. * Si `suggestAlternative` est/sont présent/s, ces alternatives sont affichées avec le message du test. * `assertMatch` et `assertNoMatch`: Vous pouvez y donner des exemples qui devraient (assertMatch) ou ne devraient pas (assertNoMatch) correspondre au sélecteur utilisé. C'est donc un test pour savoir si le sélecteur fonctionne correctement pour l'exemple donné. Normalement, cela n'est utile que pour les sélecteurs plus complexes et moins pour les sélecteurs simples de type clé-valeur. Les tests sont exécutés dans le contexte des tests unitaires et sur ​[/jenkins/job/JOSM]. Ils sont également exécutés pour les fichiers locaux du validateur si l'option avancée `validator.check_assert_local_rules` est définie à "true" dans les [wikitr:/Help/Preferences/Advanced Paramètres avancés] (voir #10206). Si vous avez activé cette option et que le test échoue, vous obtiendrez un message dans la sortie console qui peut ressembler à ceci : `WARNING: Expecting test '...' to match way ...` ou `...to not match...`. * Les règles du validateur local se rechargent automatiquement, si elles sont modifiées et sauvegardées par une application externe. (Le rechargement automatique peut s'arrêter, si une erreur de syntaxe dans votre fichier de validateur produit une exception dans la console. Dans ce cas, vous devez redémarrer JOSM).) ==== Placeholders (texte de substitution) ==== * Ils sont utilisés pour simplifier la traduction et la rendre moins sujette aux erreurs. * Les ''placeholders'' dans le message d'avertissement, par exemple `{3}` sont écrits avec des nombres croissants, en commençant par 0. Donc : 0 1 2 3 4... C'est l'id du ''placeholders''. * Après le message d'avertissement (séparé par une virgule), vous devez définir le contenu des ''placeholders''. * Vous définissez d'abord le contenu du premier ''placeholders'' (celui qui a l'id 0). Ensuite, vous définissez le contenu du deuxième ''placeholders'' (celui qui a l'id 1), et ainsi de suite. * Vous devez préciser quel sélecteur vous voulez utiliser dans le ''placeholders'' et si vous voulez utiliser la clé (`{i.key}`), la valeur (`{i.value}`) ou l'attribut entier (`{i.tag}`) du sélecteur. Le comptage commence à 0. Ainsi, `{4.value}` signifie la valeur du 5ème sélecteur. * Les classes et pseudoclasses comptent également. * Vous pouvez également utiliser `{i.tag}` pour les sélecteurs à clé uniquement. Le message affichera la valeur réelle de la clé (voir #10859). * Vous pouvez utiliser des expressions régulières dans le sélecteur et utiliser ceci dans un ''placeholders''. Le message ne montrera pas le code de l'expression régulière mais la clé/valeur/attribut réel (voir #9782). exemples : {{{ #!mapcss *[a=b][c=d][e][f=g] { throwWarning: tr("{0} BLA {1} BLUB {2} BLIB {3}", "{1.tag}", "{0.key}", "{2.key}", "{3.value}"); } }}} Cela donnera `c=d BLA a BLUB e BLIB g` {{{ #!mapcss node:unconnected:in-downloaded-area[highway=turning_circle] { throwWarning: tr("{0} doit être relié à un chemin", "{2.tag}"); } }}} Cela donnera `highway=turning_circle doit être relié à un chemin`. (`:unconnected` compte comme zéro ''placeholders'' et `:in-downloaded-area` compte comme premier ''placeholders'', donc `highway=turning_circle` est le deuxième ''placeholders''.) ==== Regroupement ==== * Les différents tests peuvent être regroupés dans le panneau du validateur. Exemple : {{{ #!mapcss node[oneway], node[bridge], node[sidewalk], node[footway] { throwWarning: tr("{0}", "{0.tag}"); group: tr("attribut sur un nœud qui devrait être utilisé sur un chemin."); } }}} aboutit à : [[Image(Help/Validator/MapCSSTagChecker:testgroup.png,link=)]] Le même texte de regroupement peut être utilisé sur différentes règles, voir par exemple les [source:/trunk/resources/data/validator/deprecated.mapcss mapcss dépréciés] ou même sur différents fichiers de validateur. == Voir également == * [wikitr:/Help/Dialog/Validator Fenêtre latérale du Validateur] * [wikitr:/Help/Preferences/Validator Préférences du validateur] et description des tests du validateur * Le principal ticket d'implémentation était le #9414. * La version originale de cette page en [wiki:/Help/Validator/MapCSSTagChecker anglais] ---- Retour à l'[wikitr:/Help Aide Principale]