2013-02-19 1 views
1

MathML DTD를 읽었습니다. 나는 일련의 코드를 발견했다. 아래 코드 줄이 있습니다.MathML DTD 구문 설명

<!ENTITY % mathml-qname.module "INCLUDE"> 
<![%mathml-qname.module; [<!ENTITY % mathml-qname.mod PUBLIC "-//W3C//ENTITIES MathML 3.0 Qualified Names 1.0//EN" "mathml3-qname.mod"> %mathml-qname.mod;]]> 

위의 두 줄을 이해할 수 없습니다. 아무도 구문을 설명 할 수 있습니까?

답변

1

이 라인 :

<!ENTITY % mathml-qname.module "INCLUDE"> 

는 파라미터 엔티티이다. (매개 변수 엔터티는 DTD에서만 사용할 수 있습니다.) 엔터티의 값은 "INCLUDE"입니다.

이 줄 :

<![%mathml-qname.module; [<!ENTITY % mathml-qname.mod PUBLIC "-//W3C//ENTITIES MathML 3.0 Qualified Names 1.0//EN" "mathml3-qname.mod"> %mathml-qname.mod;]]> 

추가 엔티티 선언에 외부 파일을 가리키는 또 다른 매개 변수 엔티티입니다. 차이점은 조건부 섹션에 래핑된다는 것입니다. 기본적으로 mathml-qname.module 후 같은 외모가 해결 될 수 있습니다 :

<![INCLUDE [<!ENTITY % mathml-qname.mod PUBLIC "-//W3C//ENTITIES MathML 3.0 Qualified Names 1.0//EN" "mathml3-qname.mod"> %mathml-qname.mod;]]> 

이것은 mathml-qname.mod 선언을 의미 참조가 포함됩니다. INCLUDEmathml-qname.module으로 변경된 경우 mathml-qname.mod에 대한 선언 및 참조가 무시됩니다.

1

첫 번째 줄은 값이 "INCLUDE"인 mathml-qname.module이라는 매개 변수 엔티티를 선언합니다.

<!ENTITY % mathml-qname.module "INCLUDE"> 

다음 비트는 여러 줄로 나뉘어 있습니다.

<![%mathml-qname.module; [ 
<!ENTITY % mathml-qname.mod PUBLIC 
    "-//W3C//ENTITIES MathML 3.0 Qualified Names 1.0//EN" 
    "mathml3-qname.mod"> 
    %mathml-qname.mod; 
]]> 

처음과 마지막 라인 (<![%mathml-qname.module;[ ... ]]>)는 조건부 부이다 - 즉, 판독 처리 통상 또는 키워드의 값에 따라 생략 될 수있는 부분. 이 키워드는 두 개의 왼쪽 대괄호 사이에 표시됩니다. 여기서 매개 변수 엔티티 mathml-qname.module에 대한 참조로 나타납니다. 읽고, 포함 및 프로세스이 섹션을 : 당신이 추측 할 수 있듯이

<![INCLUDE [ 
... 
]]> 

이 키워드 INCLUDE의 의미는 우리가 파라미터 엔티티 참조를 확장하면, 조건부 항목은 다음과 같습니다. 다른 가능한 값은 IGNORE입니다.

표시된 섹션에는 mathml-qname.mod이라는 매개 변수 엔티티에 대한 또 다른 매개 변수 엔티티 선언이 있습니다. PUBLIC 키워드는 엔티티에 대한 공용 W 시스템 ID를 제공합니다. 짧은 이야기를하기 위해 해당 엔터티는 MathML 3.0 정규화 된 이름에 대한 엔터티 컬렉션이며 해당 상대 URI (이 매개 변수 엔터티 선언을 포함하는 리소스에 상대적인)가 mathml3-qname.mod 인 리소스에 있습니다.

mathml-qname.mod에 대한 매개 변수 엔티티 선언 다음에 엔티티를 읽고 처리하도록하는 동일한 매개 변수 엔티티 (%mathml-qname.mod;)에 대한 참조가 있습니다.

비공식 용어로 :이 코드 블록은 기본적으로 외부 리소스 mathml3-qname.mod을 참조하도록 지정합니다.그러나 사용자는 구성에서 적절한 위치에 다음과 같은 형식의 매개 변수 엔티티 선언을 포함하여 해당 기본값을 대체 할 수

<!ENTITY % mathml-qname.module "IGNORE"> 
당신이 할 수

당신은의 정규화 된 이름 엔티티에 대한 선언의 다른 세트가 있다면 MathML 3.0.

+0

감사합니다. 나는 understoond. –