XML CharData EBNF 이해

Nov 13 2020

다음 EBNF 규칙은 다음과 같이 표현됩니다.

CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*) 

이해하기 정말 어렵습니다. 누군가 유효하고 유효하지 않은 문자열의 몇 가지 예를 줄 수 있습니까? 규칙에 표현 된 내용에 대한 간략한 설명도 매우 도움이 될 것입니다. 아마도 조금 많이 요구하지만. 이 사건을 포착하는 데 도움이 될 흥미로운 C ++ 코드 스 니펫이 있으면 매우 좋을 것입니다.

답변

kjhughes Nov 13 2020 at 08:57

를위한 EBNF 생산 CharData,

[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)

XML 문자 데이터는 다음을 제외한 모든 문자로 구성 될 수 있음을 의미합니다.

  • <, 마크 업을 시작합니다 (태그, 주석, XML 선언, CDATA 섹션 및 PI).
  • &, 엔티티 참조를 시작합니다.
  • ]]>CDATA 섹션을 끝내는 문자열, .

탈출 :

  • 문자 데이터에서 <와 같이 이스케이프 &lt;합니다.
  • 문자 데이터에서 &와 같이 이스케이프 &amp;합니다.
  • ]]>문자 데이터에 나타날 수 없습니다. 이스케이프 된 형식이 없습니다.

또한보십시오:

  • w3c 사양 문법의 마이너스