2011-11-23 2 views
2

모든 유효한 XML 유효 문자가 RDF에서 유효합니까?RDF 유효한 문자

내가 XML 유효한 문자에 위키 백과에이를 발견 : 당신이 어떤 구문 (을 인코딩)하는 리터럴를 기록하지만 때 RDF 리터럴은 유니 코드입니다

U+0009, U+000A, U+000D: these are the only C0 controls accepted in XML 1.0; 
U+0020–U+D7FF, U+E000–U+FFFD: this excludes some (not all) non-characters in the BMP (all surrogates, U+FFFE and U+FFFF are forbidden); 
U+10000–U+10FFFF: this includes all code points in supplementary planes, including non-characters. 

답변

1

, 당신은을 따르도록 돌봐 줘야 구문 규칙 RDF/XML은 XML 구문으로 (2004 년 편집) 유니 코드 문자를 제한하며 고유 한 인코딩 규칙이 있으므로 ', < '및 >과 같은 문자를 이스케이프 처리 할 수 ​​있습니다.

또한 유니 코드 인코딩을 사용하여 문자를 바이트 시퀀스로 변환해야하며 UTF-8 및 UTF-16이 일반적입니다. 이것들은 적어 놓을 수있는 문자를 제한하지 않습니다.

그러면 답은 실제로 의미하는 바에 달려 있습니다. 실제로 많은 유니 코드가 포함되어 있기 때문에 합법적으로 XML 또는 RDF/XML로 작성할 수없는 유니 코드 문자를 사용하는 것은 거의 불가능합니다.

+0

답장을 보내 주셔서 감사합니다. 내 문제는 트리플 저장소 (AllegroGraph)에서 코드 값 (66373 (16 진수 10345), 136090 (16 진수 2139a), 134123 (16 진수 20beb))을 가진 문자를 찾을 때 Sax 파서에서 오류가 발생한다는 것입니다. 받아 들였다. 이것은 트리플 스토어에 버그가 있음을 의미합니까? – Dragos

+0

유니 코드 6 (2011) 범위는 질문에서 말한대로 U + 0 U + 10FFFF (16 진수)이므로 처음 것만 유효합니다. U + 10345는 휴대용 개인용이 아닌 "개인용 영역"에서 유래하기 때문에 아마도 정크가 될 수도 있습니다. 데이터 문제 같은 것 같습니다. – dajobe

0

위키피디아를 사용하는 원래의 사양을 더 잘 참조해야합니다. allowed characters in XML 1.0의 설정은 다음과 같습니다 XML 태그 이름에 허용되는 문자의

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

세트는 더욱 제한된다.

RDF 리터럴에서 허용되는 문자 시퀀스는 defined as "유니 코드 [UNICODE] 문자열이며 일반 형식 C [NFC]이어야합니다. 유니 코드 문자 세트는 코드 포인트 U + 0000 ~ U + 10FFFF입니다 (사용자의 관점에 따라 minus 66 non-characters).

어쨌든 허용 된 유니 코드 문자 집합에는 XML에서 명시 적으로 금지 된 문자가 포함됩니다. SO 질문 Why are "control" characters illegal in XML 1.0?도 참조하십시오. 이 RDF 리터럴에서 허용되지만 XML 1.1에서 set of characters was broadened

Char ::= [#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] 
/* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */ 

하나는 여전히 예를 들어 XML의 문자 (U + 0000)를 표현할 수 없습니다.