Heim > Backend-Entwicklung > XML/RSS-Tutorial > Webprogrammierung – detaillierte Erläuterung der XML-Grammatikanalyse

Webprogrammierung – detaillierte Erläuterung der XML-Grammatikanalyse

黄舟
Freigeben: 2017-03-24 16:47:35
Original
1472 Leute haben es durchsucht

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 und die reservierten Wortzeichenfolgen von XML sollten die Anforderungen an Groß- und Kleinschreibung erfüllen ….

2) XML-reservierte Markierungszeichen sind: < > Das Symbol 2) Die XML-Beschreibung wird mit geschlossen, die optionale Beschreibungen wie Version und Codierung enthält, wie z : 4) XML-Anweisungen werden mit geschlossen, wie zum Beispiel: 5) XML-Kommentare werden mit geschlossen, wie zum Beispiel:

6) XML-Elemente werden geöffnet durch < Elementname >Geöffnet durch />, oder , die öffnenden und schließenden Tags des Elements stimmen überein, wie zum Beispiel oder , XML-Elemente dürfen verschachtelt sein, daher sollte die hierarchische Übereinstimmung beibehalten werden, wie zum Beispiel ..
<?xml …?> /*XML说明*/
  <!DOCTYPE …> /*XML文档说明*/
  <!-- … --> /*XML注释*/
  <?xml-stylesheet …?> /*XML指令*/
  <root> /*根数据元素*/
  <child>
  …<![CDATA[…]]>
  </child>
  </root>
Nach dem Login kopieren
7) Das CDTATA-Segment wird mit geöffnet und mit ]]> geschlossen, wodurch die darin enthaltenen Anweisungen XML-Parsing-Regeln vermeiden. Zum Beispiel:

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 [<, >, &] /*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)*
Nach dem Login kopieren


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


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


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

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)*
Nach dem Login kopieren

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节点*/>,<…>} /*下推栈*/
Nach dem Login kopieren


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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage