2010-02-16 63 views
8

我正在为xml文档创建一个DTD。我有一个用于xml元素的Enumerated attribute。我的问题是:属性类型是否有空格?XML属性可以有空格吗?

如:

<!ELEMENT Link (#PCDATA)> 
    <!ATTLIST Link Type (Amendment|Reference|Superseded|Modified| 
    Corrigendum|Corresponds|Endorsement|Equivalent|Identical|Modified| 
    Not Equivalent|Note taken of|Related|Similar) "Reference"> 

所以,我想的是:

<Link Type="Not Equivalent" \> 

,但似乎BARF。

是否有一些魔法巫术我需要做空间?还是只是运气不好?

我看了一个fewspots却不见任何参考

谢谢!

更新

对不起 - 当我说BARF,我的意思是,当我尝试验证文档(例如,打开它在Web浏览器)我得到一个错误信息:在ATTLIST枚举中发现无效字符。处理资源'file:/// C:/myxmldocument.xml'时出错。 ...

+1

如果您正在自己创建DTD的过程中,那么我会认真考虑重新考虑并改写XML Schema。这是一个非常灵活的可怕方式,同时对于什么是不允许的,什么是不允许的。 – skaffman

回答

10

简短的回答是没有。 Xml属性是名称标记,名称标记不能包含空格。相关规格链接:

Attributes

Attribute Types (see NotationType)

Names (See 4a - NameChar)

无效字符的空间。您可以使用 '。'或' - '作为分隔符,如果你喜欢。

+5

XML本身支持属性中的空格就好了 - 这是DTD规范在'ATTLIST'枚举中不允许​​的。 – skaffman

+2

只是澄清 - 属性名称中的空格始终无效。属性中的空格值是可以的,但是枚举属性声明要求枚举中的所有标记都必须是名称字符序列,因此不能有空格。你可以使用'Not_Equivalent(甚至' - Equivalent'是好的,虽然这不是一个有效的名字)。 – Max

相关问题