Xsd NMTOKEN和NMTOKENS类型的用途是什么?
Xsd NMTOKEN和NMTOKENS类型的用途是什么?,xsd,Xsd,NMTOKEN的值遵循与XML名称相同的规则,但NMTOKEN允许的任何字符都可以是第一个字符。与XMLstringtype不同,NMTOKEN值不能包含任何空格。我仍然看不出它的用处 那么,我们何时以及为什么要使用NMTOKEN类型而不是string类型呢 NMTOKENS允许我们在单个字符串中指定多个NMTOKEN值(用空格分隔)。这种类型更有意义,因为它还允许值包含空格字符,这本质上意味着NMTOKENStype和stringtype可以保存完全相同的值 那么这种类型什么时候有用呢 N
NMTOKEN
的值遵循与XML名称相同的规则,但NMTOKEN
允许的任何字符都可以是第一个字符。与XMLstring
type不同,NMTOKEN
值不能包含任何空格。我仍然看不出它的用处
那么,我们何时以及为什么要使用NMTOKEN
类型而不是string
类型呢
NMTOKENS
允许我们在单个字符串中指定多个NMTOKEN
值(用空格分隔)。这种类型更有意义,因为它还允许值包含空格字符,这本质上意味着NMTOKENS
type和string
type可以保存完全相同的值
那么这种类型什么时候有用呢
NMTOKEN
和NMTOKEN
存在于XML模式中,只是为了与DTD兼容,DTD是XML模式的前身,其属性类型为DTD。DTD几乎没有其他类型,因此这些类型不会显得多余
因此,在将DTD转换为XML模式时,请使用NMTOKEN
和NMTOKENS
附录:这些和其他所有CAP类型属于同一类别。它们在XML模式Rec中标记为“为了兼容性,NMTOKEN应仅用于属性”
如果它们完全符合您的需要,那么只使用它们可能是最简单的,但是XML模式的方法是从
xs:string
或xs:token
派生,并根据需要使用模式
方面进行约束。或者,根据我的经验,更常见的是,按原样使用xs:string
或xs:token
,并将其称为足够接近的值。我认为,NMTOKEN用于定义值,这些值表示与HTML5兼容的id值或HTML类名。与以前的HTML版本相反,HTML5允许ID以数字开头
NMTOKENS对于HTML5 ID或HTML类的列表(逗号分隔)很有用。NMTOKENS是一种非常有用的数据类型,它们允许字母、数字和“.”、“:”和“-”特殊字符 根据我的经验,它们可以非常方便地定义多值属性,这些属性可以具有上述特征。在XML中,定义多值属性的另一种方法涉及使用regex限制字符串类型,这比使用NMTOKENS类型更为复杂(不过更灵活)
当然,可以对元素采用不同的数据建模方法,但NMTOKENS是声明多值属性的最短机制。很抱歉没有尽快回复。如果NMTOKEN和NMTOKEN的存在只是为了与DTD兼容,那么当DTD兼容性不是问题时,XML模式应该使用什么类型的NMTOKEN和NMTOKEN来代替NMTOKEN?我已经根据您的评论添加到了答案中。