Heim >Backend-Entwicklung >XML/RSS-Tutorial >Webprogrammierung – detaillierte Erläuterung der XML-Grammatikanalyse
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:
element_name -> (_ | letter | ascii2) (ε| _ | - | : | . | digit | letter | signs | ascii2)*
element_text -> (ε| not reserve)*
proper_name -> (_ | letter | ascii2) (ε| _ | - | : | . | digit | letter | signs | ascii2)*
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:
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!