Heim  >  Artikel  >  Backend-Entwicklung  >  Webprogrammierung – detaillierte Erläuterung der XML-Grammatikanalyse

Webprogrammierung – detaillierte Erläuterung der XML-Grammatikanalyse

黄舟
黄舟Original
2017-03-24 16:47:351424Durchsuche

Bevor Sie eine XML-Grammatikanalyse durchführen, müssen Sie zunächst die Grundregeln der XML-Syntax verstehen:

Lexikalische Funktionen: 1) XML unterscheidet zwischen Groß- und Kleinschreibung, z. B. Elementnamen in öffnende und schließende Tags Die Groß- und Kleinschreibung sollte konsistent sein 1b01232ea6f0577bc4ec8d1a522b6a86…6879c8de8c5e2889d23c06f516d46b6b und die reservierten Wortzeichenfolgen von XML sollten die Anforderungen an Groß- und Kleinschreibung erfüllen 07941956e4f100af056a0d61df0cce2d ….

2) XML-reservierte Markierungszeichen sind: 6d267e5fab17ea8bc578f9e7e5e1570b Das Symbol 2) Die XML-Beschreibung wird mit 89a8ddf9118a7a09a9a3605cb35ff2ce geschlossen, die optionale Beschreibungen wie Version und Codierung enthält, wie z : edf5e179ef32be1a2644157264443225 4) XML-Anweisungen werden mit 3f55302c6fecc11ecaddcd5d4db73911 geschlossen, wie zum Beispiel: 62e150ae8329e2209edeb3f359aeaf75 5) XML-Kommentare werden mit 0e62f5a0f6289193cb8b669e40351d3f geschlossen, wie zum Beispiel: b8e949658cf241b4ea6343d313b8b5c8

6) XML-Elemente werden geöffnet durch 51586c70db9c1e5a3d371982fdf9ebc2Geöffnet durch />, oder 68a56ae7059556683f46528c5f5d9bdc, die öffnenden und schließenden Tags des Elements stimmen überein, wie zum Beispiel a964f9aea6a098c3296f8e249581be9b oder 1b01232ea6f0577bc4ec8d1a522b6a86…178733e97ec71b870a77daafc67e8e0b, XML-Elemente dürfen verschachtelt sein, daher sollte die hierarchische Übereinstimmung beibehalten werden, wie zum Beispiel 5c49c926bc487be6f96606df447708f4e663bf67d432875fde4c932efd4feaf7..48f80ac41c3449a2c0f73671e2cd7ccdc05db9d8adfd078fa983fcc87b083380 geöffnet und mit ]]> geschlossen, wodurch die darin enthaltenen Anweisungen XML-Parsing-Regeln vermeiden. Zum Beispiel: 093148c15d63929c640da2944ff08635

Basierend auf den oben genannten XML-Grammatikfunktionen können reguläre Ausdrücke für die lexikalische Analyse und syntaktische Analyse erstellt werden. Pushdown-Automatenstruktur .
XML-lexikalischer regulärer Ausdruck:
#Ziffer definieren [1,2,…,9] /*Zahlenzeichen*/
#Buchstaben definieren [a,b,…,z,A,B,…, Z] /*Alphabetische Zeichen*/
 #Zeichen definieren [~, ! , @, #, %, ^, &,*,(, ), ?, :, ;, „, ', ,, ., / ,-, _, +, =, |, /] /*Symbolzeichen*/
 #define ascii2 [0x80,…,0xFF] /*ASCII chart2 erweitertes Zeichen*/
 #define space [0x20, / t, /r, /n] /*Leerzeichen, Tabulatorzeichen, Wagenrücklaufzeichen, Zeilenvorschubzeichen*/
 #define Reserve [95ec6993dc754240360e28e0de8de30a, &] /*XML reservierte Zeichen*/
1) Regulärer Ausdruck des Elementnamens:



2) Regulärer Ausdruck des Elementtexts:


3) Regulärer Ausdruck des Attributnamens:
  element_name -> (_ | letter | ascii2) (ε| _ | - | : | . | digit | letter | signs | ascii2)*


 4) Regulärer Ausdruck des Attributtextes:
  element_text -> (ε| not reserve)*


XML-Syntaxstruktur:
  proper_name -> (_ | letter | ascii2) (ε| _ | - | : | . | digit | letter | signs | ascii2)*


Analyse der XML-Grammatik Muss einen Pushdown-Automaten konstruieren, seine Struktur ist wie folgt definiert:
  proper_value -> (ε| not reserve)*

1) STACK_DFA mata_xml_doc = c2c00a4f81bdb39f559c7014143f40dc

 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) Das Stapeloberseitensymbol wird verwendet, um den Typ des aktuellen Analyseknotens widerzuspiegeln:


3) Der Statussatz spiegelt die Merkmale einer bestimmten Analysestufe wider, die dem entspricht Stapeloberseitensymbol:
 Q: {…} /*详见后面的状态集合*/
  Σ: /*指向待解析的XML元素词串*/
  σ: Q×Σ->Q /*状态转移函数,见状态转移列表*/
  q: {NIL_SKIP} /*初始状态*/
  Γ: {NIL_FAILED,NIL_SUCCEED} /*终结状态集合*/
  S:  {Q/*状态*/, N/*DOM节点*/>,<…>} /*下推栈*/


Das obige ist der detaillierte Inhalt vonWebprogrammierung – detaillierte Erläuterung der XML-Grammatikanalyse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn