いいえ、列挙値にスペースを含めることはできません。列挙された各値は、正当な NMTOKEN でなければなりません。つまり、XML 名で使用できる一連の文字でなければなりません。したがって、MIXED、Mixed、RESPECT、MIXED-RESPECT、および MIXED_RESPECT は、列挙では正当な値ですが、「MIXED RESPECT」ではありません。ごめん。
その理由は歴史的なものです。SGML (XML の派生元) では、可能な値の列挙リストで宣言されている場合、言語のオプション機能により、属性名を省略できました。だから代わりに
<SystemName Case="MIXED_RESPECT">...
著者は書くことができる
<SystemName MIXED_RESPECT>...
<table border="noborder">
orの代わりに、<table border="border">
著者は単に<table border>
orと書くことができ<table noborder>
ます。値がコンテキストで解析可能であることを確認するために、それらは正当な NMTOKEN であることが制約されました。
この機能の欠点の 1 つは、この魔法のトリックが常に可能であることを保証するために、SGML では 2 つの属性の列挙値が重複することを禁じていたため、2 つの属性を正当な値としてyes
およびno
として持つことができなかったことです (パーサーが見て<table yes>
も意味がわからないかもしれませんborder="yes"
)compact="yes"
。
最小化機能は XML では削除されました (SGML パーサーを作成することを冒険的にした他のすべての最小化機能と同様に) が、すべての XML DTD が SGML として合法であることを保証するために、それを可能にした制約は保持されました。 DTD。