7311


XMLでは使用可能な文字が制限されています。([W3C Recommendation -Section2.2
Characters](http://www.w3.org/TR/REC-xml/#charsets))

[code]

    <a>&#x3c;&lt;</a>
    
[/code]

は有効と判定されます。  
では、以下のXMLとして有効ですか？無効ですか？

[code]

    <a>&#x01;</a>
    
[/code]

MSXMLおよびlibxml2で試したところ無効なXMLと判定されました。(書き込みはできても読み取れない)  
なぜ無効と判定されるのでしょうか？


CC BY-SA 3.0
2015-03-02T02:41:20.660
7305
2015-03-02T03:55:15.727
8629
question
xml
XMLでテキスト部の文字参照


`&#x01;`は文字参照の文法としては有効です。

> **4.1 Character and Entity References**
[code]

>     [66]      CharRef    ::=      '&#' [0-9]+ ';'
>                                 | '&#x' [0-9a-fA-F]+ ';'
>  
[/code]

しかし、文字参照が参照する文字は`Char`で定義されている文字集合にマッチしなければならないという制限があります。

> **Well-formedness constraint: Legal Character**
>
> Characters referred to using character references must match the  
>  production for Char.

`Char`の定義は以下のとおりで、`#x1`は含まれていないので`&#x01;`は結果的に無効です。

> **2.2 Characters**
[code]

>     [2]       Char       ::=      #x9 | #xA | #xD | [#x20-#xD7FF] |
> [#xE000-#xFFFD] | [#x10000-#x10FFFF]  /* any Unicode character, excluding
> the surrogate blocks, FFFE, and FFFF. */
>  
[/code]


CC BY-SA 3.0
2015-03-02T03:55:15.727
7311
2015-03-02T03:55:15.727
3639
7305
answer