NMTOKEN和NMTOKENS类型的用处是什么?

时间:2011-04-27 18:46:49

标签: xsd

  1. NMTOKEN的值遵循与XML名称相同的规则,但NMTOKEN除外,任何允许的字符都可以是第一个字符。与XML string类型不同,NMTOKEN值不能包含任何空格。我仍然没有看到它的用处。

    那么我们何时以及为何使用NMTOKEN类型而不是string类型?

  2. NMTOKENS使我们能够在单个字符串中指定多个NMTOKEN值(由空格分隔)。这种类型更有意义,因为它还允许值包含空格字符,这实际上意味着NMTOKENS类型和string类型可以保持完全相同的值。

    那么这种类型何时有用?

3 个答案:

答案 0 :(得分:21)

XML Schema中仅存在

NMTOKENNMTOKENS与DTD的兼容性,DTD是XML Schema的前身,它具有作为属性类型的DTD。 DTD几乎没有其他类型,因此那些在那里并不突出。

在将DTD转换为XML架构时,请使用NMTOKENNMTOKENS

附录:这些和其他所有上限类型属于同一类别。它们在XML Schema Rec中标记为“为兼容性,NMTOKEN应仅用于属性”。

如果它们完全符合您的需求,那么最简单的方法就是使用它们,但XML Schema的方式是从xs:stringxs:token派生,并根据需要约束pattern面。或者,根据我的经验,更常见的是,按原样使用xs:stringxs:token并将其调得足够近。

答案 1 :(得分:0)

我认为,NMTOKEN对定义值非常有用,它们可以解析HTML5兼容的id值或HTML类名。与以前的HTML版本相反,HTML5允许以数字开头的ID。

NMTOKENS对HTML5 ID或HTML类的(逗号分隔)列表非常有用。

答案 2 :(得分:0)

NMTOKENS是非常有用的数据类型,它们允许使用字母,数字和'。',':'和'-'特殊字符Refer

根据我的经验,它们非常容易定义可以具有上述字符的多值属性。在XML中,定义多值属性的另一种方法将涉及使用regex限制字符串类型,这比使用NMTOKENS类型涉及更多(但是灵活)。

当然,可以对元素采用不同的数据建模方法,但是NMTOKENS是声明多值属性的最短机制。