문자 참조(文字參照)는 컴퓨터 용어로, XML·HTML 따위의 SGML 계열 마크업 언어에서 한 문자를 표현하기 위한 언어 구조이다.
문자 참조가 만들어진 이유이자 문자 참조를 사용하는 목적은, 입력이 어려운 문자를 표현하거나 마크업 언어를 제어하는 문자를 일반 문자로 표현하기 위함이다. HTML에서의 예를 들면 '오른쪽 화살표'(→) 기호는 컴퓨터 자판에 없어서 입력이 힘들지만 →처럼 풀어서 쓸 수 있으며, '여는 꺾쇠표'(<) 기호는 HTML 요소를 시작하는 문자이므로 일반 문자로 표현하려면 <처럼 풀어서 써야 한다. 이처럼 문자를 뜻하는 이름을 써서 표현하는 방법을 '문자 실체 참조' 혹은 '실체 참조'라 하고 문자 코드를 써서 표현하는 방법을 '수치 문자 참조' 또는 '문자 참조'라고 한다. HTML 4 버전에서 사용 가능한 문자 실체 참조는 252가지이다.
→
<
문자 참조를 사용할 때에는 크게 두 가지 방법을 사용할 수 있다. 첫째는 미리 정의된 특정한 이름(SGML 실체, SGML entity)을 문자를 표현하는 약어로 사용하는 방법이고, 둘째는 문자를 표현하는 ISO 10646의 문자 코드를 수로 나타내어 사용하는 방법이다. 이 두 가지 방법을 가리키는 이름은 표준에 따라 조금 다르다. HTML 권장안에서는 전자를 문자 실체 참조(文字實體參照), 후자를 수치 문자 참조(數値文字參照)라고 하며 XML 권장안에서는 이를 각각 실체 참조, 문자 참조로 부른다. 이 네 용어는 영어의 번역어이다. 실제 권장안에 표기된 이름은 순서대로 character entity reference, numeric character reference, entity reference, character reference이다.
&이름;
문자 실체 참조는 SGML 실체를 이용하는 문자 참조이다. 여기에서 사용하는 문자 실체 이름은 표준 문서 형식 정의(DTD)에 미리 명시될 수도 있고, 사용자가 따로 DTD에 정의 가능한 경우도 있다. 앰퍼샌드 기호(&)와 문자 실체 이름을 쓰고 쌍반점(;)으로 끝맺는다. 실체의 이름은 대소문자를 구별한다. 한 예로 HTML에서 Å은 Å 문자를 나타내고, å은 å 문자를 나타낸다.
&#N;
&#xH;
수치 문자 참조는 문자 코드의 수치를 직접 넣는 방식의 문자 참조이다. 10진수 또는 16진수를 쓸 수 있다. 여기에 사용되는 문자 코드는 국제 문자 세트(ISO 10646)를 따른다.[1] 사용법은 문자 실체 참조와 비슷하지만 실체 이름 대신 문자 코드 수치를 쓰고 10진수 수치 앞에는 해시 기호(#)를, 16진수 수치 앞에는 해시 기호와 로마자 x를 쓴다. 16진수를 쓸 때 보통 대문자로 쓰긴 하지만, 대소문자 구별은 하지 않아도 된다. 단, 수 앞의 x를 대문자로 &#XH;와 같이 쓰는 것은 HTML에서는 가능하지만 XML에서는 금지된다.[1][3][4]
&#XH;
W3C의 XML 권장안에서는 실체를 사용하는 문자 참조에 대해 '문자 실체 참조'라는 용어 대신 '실체 참조'라는 용어를 쓴다. HTML이 수백 개의 문자 실체 참조를 그 권장안에 포함하고 있는 것과는 달리, XML에서는 단 다섯 개의 '미리 정의된 실체(predefined entities)'를 규정하고 있다.[5][6] 그러나 사용자가 문서 형식 정의를 통해서 새로운 실체 참조를 추가하는 것이 가능하다.
HTML 4 버전의 문서 형식 정의에서는 252개의 문자 실체를 정의하고 있으며 HTML 4.01 버전에서는 새로운 문자 참조가 추가되지 않았다. HTML 4의 규격 명세에서는 표준 문서 형식 정의에 포함된 것 이외에 사용자에 의한 실체 추가 정의를 허용하지 않는다. 아래 표는 2010년 기준으로 HTML 권장안에 포함된 252개의 문자 실체 이름[7]과 XML에서 지정된 어포스트로피(U+0027)[8]를 더한, 모두 253개의 사용 가능한 문자 실체 참조 목록이다.
표 각주:
PUBLIC "-//W3C//ENTITIES Latin 1//EN//HTML"
PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent"
PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML"
PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent"
PUBLIC "-//W3C//ENTITIES Special//EN//HTML"
PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent"