webentwicklung-frage-antwort-db.com.de

Was ist der Nutzen von NMTOKEN- und NMTOKENS-Typen?

  1. Der Wert von NMTOKEN folgt den gleichen Regeln wie der XML-Name, außer dass bei NMTOKEN jedes der zulässigen Zeichen das erste Zeichen sein kann. Im Gegensatz zum XML-Typ string dürfen NMTOKEN-Werte keine Leerzeichen enthalten. Trotzdem sehe ich seine Nützlichkeit nicht.

    Wann und warum sollten wir NMTOKEN anstelle von string verwenden?

  2. Mit NMTOKENS können Sie mehrere NMTOKEN-Werte (durch Leerzeichen getrennt) in einer einzigen Zeichenfolge angeben. Dieser Typ ist noch weniger sinnvoll, da er auch zulässt, dass ein Wert Leerzeichen enthält, was im Wesentlichen bedeutet, dass sowohl der Typ NMTOKENS als auch der Typ string genau dieselben Werte enthalten können.

    Wann ist dieser Typ nützlich?

18
flockofcode

NMTOKEN und NMTOKENS sind aus Gründen der Kompatibilität mit DTDs, dem Vorgänger von XML Schema, die als Attributtypen verwendet wurden, nur in XML Schema vorhanden. DTD hat wenige andere Typen, so dass diese dort nicht als redundant auffallen. 

Verwenden Sie also NMTOKEN und NMTOKENS, wenn Sie eine DTD in ein XML-Schema konvertieren.

Nachtrag: Diese und alle anderen Caps gehören zur selben Kategorie. Sie sind in der XML Schema Rec mit dem Text gekennzeichnet: "Aus Gründen der Kompatibilität sollten NMTOKEN nur für Attribute verwendet werden." 

Wenn sie genau zu Ihren Anforderungen passen, ist es möglicherweise am einfachsten, sie nur zu verwenden. Der XML-Schema-Weg besteht jedoch darin, von xs:string oder xs:token abzuleiten und je nach Bedarf mit einer pattern-Facette einzuschränken. Oder, in meiner Erfahrung häufiger, xs:string oder xs:token wie es ist und es nah genug nennen.

20
xan

NMTOKENS ist ein sehr nützlicher Datentyp, der Alphabete, Ziffern und '.', ':' Und '-' Sonderzeichen Refer erlaubt. 

Nach meiner Erfahrung sind sie sehr praktisch, um mehrwertige Attribute zu definieren, die die oben genannten Zeichen enthalten können. In XML würde die andere Methode zum Definieren von mehrwertigen Attributen das Einschränken eines Stringtyps mit regex umfassen, was (jedoch flexibel) mehr ist als die Verwendung des NMTOKENS-Typs. 

Natürlich kann ein anderer Datenmodellierungsansatz mit Elementen verwendet werden, aber NMTOKENS ist der kürzeste Mechanismus, um ein Attribut mit mehreren Werten zu deklarieren.

0
Ironluca

Ich denke, NMTOKEN sind nützlich zum Definieren von Werten, die HTML5-kompatible ID-Werte oder HTML-Klassennamen darstellen. Im Gegensatz zu früheren HTML-Versionen erlaubt HTML5 IDs, die mit einer Ziffer beginnen.

NMTOKENS sind nützlich für (durch Kommas getrennte) Listen von HTML5-IDs oder HTML-Klassen.

0
Michael