-
Значение
NMTOKEN
следует тем же правилам, что и имя XML, за исключениемNMTOKEN
любой из допустимых символов может быть первым символом. В отличие от типа XMLstring
значенияNMTOKEN
can not содержат пробелы. Тем не менее я не вижу его полезности.Итак, когда и почему мы будем использовать тип
NMTOKEN
вместо типаstring
? -
NMTOKENS
позволяет указать несколько значенийNMTOKEN
(разделенных пробелами) в одной строке. Этот тип имеет еще меньшее значение, поскольку он также позволяет содержать символы пробелов, что по существу означает, что типNMTOKENS
type иstring
может содержать точно такие же значения.Итак, когда этот тип полезен?
В чем польза типов NMTOKEN и NMTOKENS?
Ответ 1
NMTOKEN
и NMTOKENS
существуют в XML-схеме только для совместимости с DTD, предшественником XML-схемы, которая имеет эти типы атрибутов. DTD имеет несколько других типов, поэтому они не выделяются как избыточные.
Так что используйте NMTOKEN
и NMTOKENS
, когда вы конвертируете DTD в XML-схему.
Приложение: те и другие все типы кепок попадают в одну категорию. Они помечены в XML Schema Rec с текстом: "Для совместимости NMTOKEN следует использовать только по атрибутам".
Если они точно соответствуют вашим потребностям, проще всего использовать их, но способ XML Schema состоит в том, чтобы вывести из xs:string
или xs:token
и ограничить по мере необходимости фасет pattern
. Или, чаще всего, по моему опыту, используйте xs:string
или xs:token
as-is и назовите его достаточно близко.
Ответ 2
Я думаю, NMTOKEN полезны для определения значений, которые соответствуют значениям идентификатора совместимого с HTML5 или именам классов HTML. Вопреки предыдущим версиям HTML, HTML5 разрешает идентификаторы, начинающиеся с цифры.
NMTOKENS полезны для (разделенных запятыми) списков идентификаторов HTML5 или классов HTML.
Ответ 3
NMTOKENS является очень полезным типом данных, они позволяют алфавитов, цифры и, „:“ и „-“ специальные символы "" См.
По моему опыту, они очень удобны для определения многозначных атрибутов, которые могут иметь вышеуказанные символы. В XML другой метод определения многозначных атрибутов будет включать ограничение типа строки с помощью регулярного выражения, что более привлекательно (однако, гибко), чем использование типа NMTOKENS.
Конечно, можно использовать другой подход к моделированию данных с элементами, но NMTOKENS - самый короткий механизм для объявления атрибута с несколькими значениями.
Ответ 4
NMTOKEN позволяет XML обрабатывать или обрабатывать пробелы как символы. Поскольку атрибуты не принимают больше одного слова в качестве значений, NMTOKEN позволяет нам писать слова Нью-Йорк, Новая Зеландия или президент Обама, у которых есть разделители пробелов.