웹 프로그래밍 - XML ​​문법 분석의 상세 설명

黄舟
풀어 주다: 2017-03-24 16:47:35
원래의
1460명이 탐색했습니다.

XML 문법 분석을 수행하기 전에 먼저 XML 구문의 기본 규칙을 이해해야 합니다.

어휘 특징: 1) XML은 요소 이름과 같이 대소문자를 구분합니다. 열기 및 닫기 태그 대문자와 소문자는 이어야 하며, XML의 예약어 문자열은 대문자 및 소문자 요구 사항 을 충족해야 합니다. ….

2) XML 예약 표시 문자는 다음과 같습니다. < > 예약어 기호는 요소 이름, 요소 텍스트, 속성 이름 및 속성 값에 나타날 수 없습니다. < 태그를 닫는 데 사용됩니다. > 일반적인 의미는 <generated<, >Generate>, &Generate&, &aposGenerate', "Generate”

입니다. 3) 요소 이름은 밑줄 또는 문자로 시작하고 문자, 숫자, 마침표, 하이픈, 밑줄, 콜론 및 기타 문자를 포함할 수 있습니다. 언어의 확장 문자 요소 이름에는 공백 문자(공백 문자, 탭 문자, 줄 바꿈 문자, 캐리지 리턴 문자)가 포함될 수 없습니다. 예: 속성 이름 규칙은 요소 이름과 동일하며 속성 값은 작은따옴표 또는 큰따옴표로 묶이고 XML 예약 문자 이외의 문자열로 구성될 수 있습니다. 예:

구문 기능 : 1) XML 문서는 XML 설명, 여러 개의 선택적

문서 설명

, 여러 개의 선택적 XML 지시문, 여러 개의 선택적 XML 주석 및 루트 요소의 데이터 본문으로 구성됩니다. 또한 CDATA가 포함될 수 있습니다.

2) XML 설명은 표시로 닫힙니다. 여기에는 다음과 같은 버전 및 인코딩과 같은 선택적 설명이 포함됩니다. ;?xml 버전 =”1.0” 인코딩=”UTF-9”?>

3) XML 문서 설명은 로 닫힙니다. 예: 4) XML 명령어는 로 닫힙니다. 예:
5) XML 주석은
6) XML 요소는 Open, /> 또는 으로 닫힙니다. 요소의 열기 및 닫기 태그는 인 경우 XML 요소 중첩이 허용되며 ..와 같은 계층적 일치도 유지되어야 합니다.
7) CDTATA 세그먼트는 로 열리고 ]]>로 닫히며, 이는 XML 구문 분석 규칙을 피하는 명령문을 만드는 데 사용됩니다. 예:
위의 XML 문법 기능을 기반으로 어휘 분석 및 구문 분석을 위한 정규식을 구성할 수 있습니다. 푸시다운 자동 구조 .
XML 어휘 정규식:
#define digit [1,2,…,9] /*숫자 문자*/
#define letter [a,b,…,z,A,B,…, Z] /*알파벳 문자*/
 #define 기호 [~, ! , @, #, %, ^, &,*,(, ), ?, :, ;, “, ', ,, ., / ,-, _, +, =, |, /] /*기호 문자*/
 #define ascii2 [0x80,…,0xFF] /*ASCII 차트 2 확장 문자*/
 #define 공백 [0x20, / t, /r, /n] /*공백 문자, 탭 문자, 캐리지 리턴 문자, 줄 바꿈 문자*/
 #define Reserve [<, >, &] /*XML 예약 문자*/
1) 요소 이름의 정규식:

  element_name -> (_ | letter | ascii2) (ε| _ | - | : | . | digit | letter | signs | ascii2)*
로그인 후 복사

2) 요소 텍스트의 정규식:

  element_text -> (ε| not reserve)*
로그인 후 복사

3) 속성 이름의 정규식:

  proper_name -> (_ | letter | ascii2) (ε| _ | - | : | . | digit | letter | signs | ascii2)*
로그인 후 복사

 4) 속성 텍스트의 정규식:

  proper_value -> (ε| not reserve)*
로그인 후 복사

XML 구문 구조:

정의는 다음과 같습니다.


 1) STACK_DFA mata_xml_doc =

 xml_document -> xml_header (ε| xml_declare | xml_instruct | xml_comments)* xml_element
  xml_header -> [<?xml](space)*(proper_token)*(space)* [?>]
  xml_declare -> [<!]reserve_word(space)*(token)*(space)*[>]
  xml_instruct -> [<?]reserve_word(space)* (proper_token)* (space)*[?>]
  xml_comments -> [<!--](ε| digit | letter | signs | ascii2 | space)*[-- >]
  xml_element -> [<]element_name (space)*( ε| proper_token)*(space)*[/>] | 
  [<]element_name(space)*( ε | proper_token)*(space)*[>]
  [ε| <![CDATA[ ]element_text[ε| ]]>]
  (ε | xml_element)*(space)*[</]element_name[>]
  proper_token -> proper_name(space)*[=](space)* [ε| <![CDATA[ ] [‘ | “]proper_value[‘ | “] [ε| ]]>]
  reserve_word -> [DOCTYPE | ELEMENT | NOTATION | …]
  token -> (ε| not reserve)*
로그인 후 복사

 2) 스택 상단 기호 세트는 현재 분석 노드의 유형을 반영하는 데 사용됩니다:


 Q: {…} /*详见后面的状态集合*/
  Σ: /*指向待解析的XML元素词串*/
  σ: Q×Σ->Q /*状态转移函数,见状态转移列表*/
  q: {NIL_SKIP} /*初始状态*/
  Γ: {NIL_FAILED,NIL_SUCCEED} /*终结状态集合*/
  S:  {Q/*状态*/, N/*DOM节点*/>,<…>} /*下推栈*/
로그인 후 복사

3 ) 상태 세트는 스택의 최상위 기호에 해당하는 특정 분석 단계의 특성을 반영합니다.


T:{NIL/*空*/, TG/*标记*/, NS/*元素*/, IS/*指令*/, DS/*声明*/, CD/*CDATA界段*/,CM/*注释*/}
로그인 후 복사

위 내용은 웹 프로그래밍 - XML ​​문법 분석의 상세 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿