Zend_Markup-Parsers.xml 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.markup.parsers">
  5. <title>Zend_Markup Parser</title>
  6. <para>
  7. <classname>Zend_Markup</classname> wird aktuell mit zwei Parsern ausgeliefert, einen BBCode
  8. Parser und einen Textile Parser.
  9. </para>
  10. <sect2 id="zend.markup.parsers.theory">
  11. <title>Theorie des Parsens</title>
  12. <para>
  13. Die Parser von <classname>Zend_Markup</classname> sind Klasse die Text mit Markup in
  14. einen Token Baum konvertieren. Auch wenn wir hier den BBCode Parser als Beispiel
  15. verwenden ist die Idee des Token Baums die gleiche bei allen Parsern. Wir beginnen mit
  16. diesem Teil von BBCode als Beispiel:
  17. </para>
  18. <programlisting><![CDATA[
  19. [b]foo[i]bar[/i][/b]baz
  20. ]]></programlisting>
  21. <para>
  22. Der BBCode Parser nimmt diesen Wert, teilt Ihn auf und erzeugt den folgenden Baum:
  23. </para>
  24. <itemizedlist>
  25. <listitem>
  26. <para>[b]</para>
  27. <itemizedlist>
  28. <listitem>
  29. <para>foo</para>
  30. </listitem>
  31. <listitem>
  32. <para>[i]</para>
  33. <itemizedlist>
  34. <listitem>
  35. <para>bar</para>
  36. </listitem>
  37. </itemizedlist>
  38. </listitem>
  39. </itemizedlist>
  40. </listitem>
  41. <listitem>
  42. <para>baz</para>
  43. </listitem>
  44. </itemizedlist>
  45. <para>
  46. Wie man sieht sind die schließenden Tags weg. Sie werden nicht als Inhalt der
  47. Baumstruktur angezeigt. Das ist deswegen der Fall, da schließende Tags kein Teil des
  48. aktuellen Inhalts sind. Das bedeutet aber nicht das die schließenden Tags einfach
  49. verloren sind. Sie sind in der Tag Information für das Tag selbst gespeichert. Es ist
  50. auch zu beachten das dies nur eine vereinfachte Darstelliung des Baumes selbst ist. Der
  51. aktuelle Baum enthält viel mehr Information, wie die Attribute der Tags und deren Namen.
  52. </para>
  53. </sect2>
  54. <sect2 id="zend.markup.parsers.bbcode">
  55. <title>Der BBCode Parser</title>
  56. <para>
  57. Der BBCode Parser ist ein <classname>Zend_Markup</classname> Parser der BBCode in einen
  58. Token Baum konvertiert. Die Syntax alle BBCode Tags ist:
  59. </para>
  60. <programlisting language="text"><![CDATA[
  61. [name(=(value|"value"))( attribute=(value|"value"))*]
  62. ]]></programlisting>
  63. <para>
  64. Einige Beispiel von gültigen BBCode Tags sind:
  65. </para>
  66. <programlisting><![CDATA[
  67. [b]
  68. [list=1]
  69. [code file=Zend/Markup.php]
  70. [url="http://framework.zend.com/" title="Zend Framework!"]
  71. ]]></programlisting>
  72. <para>
  73. Standardmäßig werden alle Tags durch Verwendung des Formats '[/tagname]' geschlossen.
  74. </para>
  75. </sect2>
  76. <sect2 id="zend.markup.parsers.textile">
  77. <title>Der Textile Parser</title>
  78. <para>
  79. Der Textile Parser ist ein <classname>Zend_Markup</classname> Parser der Textile in
  80. einen Token Baum konvertiert. Weil Textile keine Tag Struktur hat ist nachfolgend eine
  81. Liste von Beispiel Tags:
  82. </para>
  83. <table id="zend.markup.parsers.textile.tags">
  84. <title>Liste der grundsätzlichen Textile Tags</title>
  85. <tgroup cols="2" align="left" colsep="1" rowsep="1">
  86. <thead>
  87. <row>
  88. <entry>Beispiel Eingabe</entry>
  89. <entry>Beispiel Ausgabe</entry>
  90. </row>
  91. </thead>
  92. <tbody>
  93. <row>
  94. <entry>*foo*</entry>
  95. <entry><![CDATA[<strong>foo</strong>]]></entry>
  96. </row>
  97. <row>
  98. <entry>_foo_</entry>
  99. <entry><![CDATA[<em>foo</em>]]></entry>
  100. </row>
  101. <row>
  102. <entry>??foo??</entry>
  103. <entry><![CDATA[<cite>foo</cite>]]></entry>
  104. </row>
  105. <row>
  106. <entry>-foo-</entry>
  107. <entry><![CDATA[<del>foo</del>]]></entry>
  108. </row>
  109. <row>
  110. <entry>+foo+</entry>
  111. <entry><![CDATA[<ins>foo</ins>]]></entry>
  112. </row>
  113. <row>
  114. <entry>^foo^</entry>
  115. <entry><![CDATA[<sup>foo</sup>]]></entry>
  116. </row>
  117. <row>
  118. <entry>~foo~</entry>
  119. <entry><![CDATA[<sub>foo</sub>]]></entry>
  120. </row>
  121. <row>
  122. <entry>%foo%</entry>
  123. <entry><![CDATA[<span>foo</span>]]></entry>
  124. </row>
  125. <row>
  126. <entry>PHP(PHP Hypertext Preprocessor)</entry>
  127. <entry>
  128. <![CDATA[<acronym title="PHP Hypertext Preprocessor">PHP</acronym>]]>
  129. </entry>
  130. </row>
  131. <row>
  132. <entry>"Zend Framework":http://framework.zend.com/</entry>
  133. <entry>
  134. <![CDATA[<a href="http://framework.zend.com/">Zend Framework</a>]]>
  135. </entry>
  136. </row>
  137. <row>
  138. <entry>h1. foobar</entry>
  139. <entry><![CDATA[<h1>foobar</h1>]]></entry>
  140. </row>
  141. <row>
  142. <entry>h6. foobar</entry>
  143. <entry><![CDATA[<h6>foobar</h6>]]></entry>
  144. </row>
  145. <row>
  146. <entry>!http://framework.zend.com/images/logo.gif!</entry>
  147. <entry>
  148. <![CDATA[<img src="http://framework.zend.com/images/logo.gif" />]]>
  149. </entry>
  150. </row>
  151. </tbody>
  152. </tgroup>
  153. </table>
  154. <para>
  155. Auch der Textile Parser wrappt alle Tags in Paragraphen; ein Paragraph endet mit zwei
  156. Leerzeilen, und wenn es mehr Tags gibt, wird ein neuer Paragraph hinzugefügt.
  157. </para>
  158. <sect3 id="zend.markup.parsers.textile.lists">
  159. <title>Listen</title>
  160. <para>
  161. Der Textile Parser unterstützt auch zwei Typen von Listen. Den nummerischen Typ
  162. der das "#" Zeichen verwendet und Bullet-Listen welche das "*" Zeichen verwenden.
  163. Anbei ein Beispiel für beide Listen:
  164. </para>
  165. <programlisting><![CDATA[
  166. # Element 1
  167. # Element 2
  168. * Element 1
  169. * Element 2
  170. ]]></programlisting>
  171. <para>
  172. Das obige erzeugt zwei Listen: Die erste nummeriert; und die zweite mit Punkten.
  173. In den Listen Elementen können normale Tags wie dick (*), und hochgestellt (_)
  174. verwendet werden. Tags die auf einer neuen Zeile beginnen müssen (wie 'h1' usw.)
  175. können nicht innerhalb von Listen verwendet werden.
  176. </para>
  177. </sect3>
  178. </sect2>
  179. </sect1>