1

.NETでカスタムxhtmlvaldidatorを作成し(dtd +いくつかの追加ルールで検証)、検証とw3c検証の間に不一致があることに気づきました。

私のバリデーターでは、IDにコロンがあると、次のエラーが発生します(たとえば、id = "mustang:horse")。

(エラー)'id'属性は、そのデータ型に応じて無効な値を持っています。

しかし、このパターンのw3cではエラーは発生しません。

xml / xhtmlで属性の無効な文字のリストを見つけようとしましたが、見つかりませんでしたか?

ご協力ありがとうございました、

4

2 に答える 2

3

リストがあり、それはコロンを許可します。

XHTML 1.0仕様は、http://www.w3.org/TR/xhtml1/#h-4.10に記載されています。

... XHTML 1.0では、id属性はタイプIDであると定義されています...

XML 1.0仕様では、http://www.w3.org/TR/2008/REC-xml-20081126/#idに記載されています。

タイプIDの値は、名前の生成と一致する必要があります。

また、名前の生成はhttp://www.w3.org/TR/2008/REC-xml-20081126/#NT-Nameで定義されています。

  [4] NameStartChar :: = ":" |
                       [AZ] | "_" | [az] | [#xC0-#xD6] |
                       [#xD8-#xF6] | [#xF8-#x2FF] |
                       [#x370-#x37D] | [#x37F-#x1FFF] |
                       [#x200C-#x200D] | [#x2070-#x218F] |
                       [#x2C00-#x2FEF] | [#x3001-#xD7FF] |
                       [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |
                       [#x10000-#xEFFFF]

  [4a] NameChar :: = NameStartChar | "-" | 「。」|
                       [0-9] | #xB7 | [#x0300-#x036F] |
                       [#x203F-#x2040]           

  [5]名前::=NameStartChar(NameChar)*

また、この正式な定義の上に次のように述べています。

ドキュメントの作成者は、自然言語で意味のある単語または単語の組み合わせである名前を使用し、名前に記号や空白文字を使用しないようにすることをお勧めします。COLON、HYPHEN-MINUS、FULL STOP(ピリオド)、LOW LINE(アンダースコア)、およびMIDDLEDOTが明示的に許可されていることに注意してください。

(私の強調)

于 2011-06-24T19:54:28.293 に答える
1

この違いの理由は、W3Cバリデーターが名前空間対応のXHTML処理を行っていないように見えるためです。XHTMLドキュメントはXHTML名前空間にある必要がありますが、これは実際には合理的です。HTMLドキュメントは名前空間を使用しておらず、XHTMLドキュメントの標準的な有効な構造(HTMLとして)はDTDファイルによって定義され、DTDは実際には名前空間を認識しないためです。

@Alochiがすでに述べたように:

タイプIDの値は、名前の生成と一致する必要があります。

これは、ドキュメントが名前空間に対応していないものとして解析される場合は当てはまりますが、ドキュメントが名前空間に準拠する必要がある場合は当てはまりません。XML仕様の名前空間では、 IDはコロン文字を明示的に禁止するNCName生成と一致する必要があると規定されています。名前空間を意識した解析は一般的な規則であるため、ドキュメントの解析が名前空間を認識していない場合に許可されていても、idの値にコロンを使用することはお勧めしません。

概要:名前空間が無視される場合、ID値は有効Nameである必要があり、コロンを含めることができます。それ以外の場合は有効である必要がありNCName、コロンを含めることはできません。

于 2011-07-08T14:57:30.780 に答える