web-dev-qa-db-fra.com

Quelle est l'utilité des types NMTOKEN et NMTOKENS?

  1. La valeur de NMTOKEN suit les mêmes règles que le nom XML, à l'exception de NMTOKEN, l'un des caractères autorisés peut être le premier. Contrairement au type XML string, les valeurs NMTOKEN ne peuvent contenir aucun espace. Je ne vois toujours pas son utilité.

    Alors, quand et pourquoi utiliserions-nous le type NMTOKEN au lieu d’un type string?

  2. NMTOKENS nous permet de spécifier plusieurs valeurs NMTOKEN (séparées par des espaces) dans une seule chaîne. Ce type a encore moins de sens, car il permet également à une valeur de contenir des caractères d'espacement, ce qui signifie essentiellement que les types NMTOKENS et string peuvent contenir exactement les mêmes valeurs.

    Alors, quand ce type est-il utile?

18
flockofcode

NMTOKEN et NMTOKENS existent dans le schéma XML uniquement pour assurer la compatibilité avec les DTD, le prédécesseur du schéma XML, qui les utilisait comme types d'attributs. DTD a peu d'autres types, donc ceux-ci ne sont pas redondants. 

Utilisez donc NMTOKEN et NMTOKENS lorsque vous convertissez une DTD en un schéma XML.

Addendum: Ces types et tous les types tout en majuscules entrent dans la même catégorie. Ils sont marqués dans XML Schema Rec avec le texte suivant: "Pour des raisons de compatibilité, NMTOKEN ne doit être utilisé que sur des attributs." 

S'ils correspondent exactement à vos besoins, il peut être plus simple de les utiliser, mais la méthode du schéma XML consiste à dériver de xs:string ou xs:token et à contraindre au besoin avec une facette pattern. Ou, plus couramment dans mon expérience, utilisez xs:string ou xs:token en l'état et appelez-le suffisamment près.

20
xan

NMTOKENS est un type de données très utile, il autorise les alphabets, chiffres et '.', ':' Et '-' caractères spéciaux Refer

D'après mon expérience, il est très pratique de définir des attributs à valeurs multiples pouvant comporter les caractères ci-dessus. En XML, l’autre méthode de définition d’attributs à valeurs multiples impliquerait de restreindre un type de chaîne avec regex, ce qui est plus complexe (toutefois flexible) que d’utiliser le type NMTOKENS. 

Bien sûr, une approche de modélisation de données différente pourrait être adoptée avec des éléments, mais NMTOKENS est le mécanisme le plus court pour déclarer un attribut à valeurs multiples.

0
Ironluca

Je pense que NMTOKEN est utile pour définir des valeurs représentant les identifiants compatibles HTML5 ou les noms de classe HTML. Contrairement aux versions HTML précédentes, HTML5 autorise les identifiants commençant par un chiffre.

Les NMTOKENS sont utiles pour les listes (séparées par des virgules) d’id HTML5 ou de classes HTML.

0
Michael