<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 24604 -->
<sect1 id="zend.markup.parsers">
    <title>Zend_Markup パーサー</title>

    <para>
        <classname>Zend_Markup</classname> には現在 BBCode パーサーと Textile パーサー
        という２つのパーサーが同梱されています。
    </para>

    <sect2 id="zend.markup.parsers.theory">
        <title>パーサーの仕組み</title>

        <para>
            <classname>Zend_Markup</classname> のパーサは、マークアップによる文をトークン木へと
            変換するクラス群です。ここの例では BBCode パーサーを用いますが、
            全てのパーサーにおいてトークン木の見解は変わりません。
            例として BBCode のこの要素で始めます:
        </para>

        <programlisting language="text"><![CDATA[
[b]foo[i]bar[/i][/b]baz
]]></programlisting>

        <para>
            BBCode パーサーは、要素を分離し以下の木構造を生成した値を持つことでしょう:
        </para>

        <itemizedlist>
            <listitem>
                <para>[b]</para>

                <itemizedlist>
                    <listitem>
                        <para>foo</para>
                    </listitem>

                    <listitem>
                        <para>[i]</para>

                        <itemizedlist>
                            <listitem>
                                <para>bar</para>
                            </listitem>
                        </itemizedlist>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>baz</para>
            </listitem>
        </itemizedlist>

        <para>
            クローズタグは消えていることにお気づきになったでしょう、それらは木構造の
            内容として出現しません。これは、クローズタグは実際の内容のものではないからです。
            ですが、これは単にクローズタグを消失したことを意図するものではなく、
            タグ自身のタグ情報内で保持されています。さらに、これは木構造自身の簡潔な概観で
            あるだけということに注意してください。実際の木構造は、タグの属性とその名について
            より多くの情報を含んでいます。
        </para>
    </sect2>

    <sect2 id="zend.markup.parsers.bbcode">
        <title>BBCode パーサー</title>

        <para>
            BBCode パーサーは BBCode をトークン木へ変換する
            <classname>Zend_Markup</classname> パーサーです。 全ての BBCode タグの文法は:
        </para>

        <programlisting language="text"><![CDATA[
[name(=(value|"value"))( attribute=(value|"value"))*]
]]></programlisting>

        <para>
            有効な BBCode タグのいくつかの例は:
        </para>

        <programlisting language="text"><![CDATA[
[b]
[list=1]
[code file=Zend/Markup.php]
[url="http://framework.zend.com/" title="Zend Framework!"]
]]></programlisting>

        <para>
            標準で、 '[/tagname]' フォーマットを用いて閉じられます.
        </para>
    </sect2>

    <sect2 id="zend.markup.parsers.textile">
        <title>Textile パーサー</title>

        <para>
            Textile パーサーは、Textile からトークン木へと変換する <classname>Zend_Markup</classname>
            パーサーです。 Textile はタグ構造を持っていないため、
            以下は見本例のタグのリストです:
        </para>

        <table id="zend.markup.parsers.textile.tags">
            <title>基本的な Textile タグのリスト</title>

            <tgroup cols="2" align="left" colsep="1" rowsep="1">
                <thead>
                    <row>
                        <entry>入力例</entry>

                        <entry>出力例</entry>
                    </row>
                </thead>

                <tbody>
                    <row>
                        <entry>*foo*</entry>

                        <entry><![CDATA[<strong>foo</strong>]]></entry>
                    </row>

                    <row>
                        <entry>_foo_</entry>

                        <entry><![CDATA[<em>foo</em>]]></entry>
                    </row>

                    <row>
                        <entry>??foo??</entry>

                        <entry><![CDATA[<cite>foo</cite>]]></entry>
                    </row>

                    <row>
                        <entry>-foo-</entry>

                        <entry><![CDATA[<del>foo</del>]]></entry>
                    </row>

                    <row>
                        <entry>+foo+</entry>

                        <entry><![CDATA[<ins>foo</ins>]]></entry>
                    </row>

                    <row>
                        <entry>^foo^</entry>

                        <entry><![CDATA[<sup>foo</sup>]]></entry>
                    </row>

                    <row>
                        <entry>~foo~</entry>

                        <entry><![CDATA[<sub>foo</sub>]]></entry>
                    </row>

                    <row>
                        <entry>%foo%</entry>

                        <entry><![CDATA[<span>foo</span>]]></entry>
                    </row>

                    <row>
                        <entry>PHP(PHP Hypertext Preprocessor)</entry>

                        <entry>
                            <![CDATA[<acronym title="PHP Hypertext Preprocessor">PHP</acronym>]]>
                        </entry>
                    </row>

                    <row>
                        <entry>"Zend Framework":http://framework.zend.com/</entry>

                        <entry>
                            <![CDATA[<a href="http://framework.zend.com/">Zend Framework</a>]]>
                        </entry>
                    </row>

                    <row>
                        <entry>h1. foobar</entry>

                        <entry><![CDATA[<h1>foobar</h1>]]></entry>
                    </row>

                    <row>
                        <entry>h6. foobar</entry>

                        <entry><![CDATA[<h6>foobar</h6>]]></entry>
                    </row>

                    <row>
                        <entry>!http://framework.zend.com/images/logo.gif!</entry>

                        <entry>
                            <![CDATA[<img src="http://framework.zend.com/images/logo.gif" />]]>
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </table>

        <para>
            さらに、 Textile パーサーは全てのタグを段落へとラップします;
            段落は2行の新しい行で終わり、よりタグがあった場合、新しい段落が加えられます。
        </para>

        <sect3 id="zend.markup.parsers.textile.lists">
            <title>リスト</title>

            <para>
                Textile パーサーは2種類のリストをサポートします。"#"記号を用いた数値型と
                "*"記号を用いた <!-- TODO : to be translated -->bullit リストです。両方のリストの例:
            </para>

            <programlisting language="text"><![CDATA[
# Item 1
# Item 2

* Item 1
* Item 2
]]></programlisting>

            <para>
                上記は2つのリストを生成します: 一つは、数値型; 2つ目は、 <!-- TODO : to be translated -->bulleted 。
                リスト内で、太 (*)、と 強調 (_)のように標準タグを用いることができます。タグは、
                （'h1'などのように）新しい行にて始まっている必要があり、リスト内で用いることは
                できません。
            </para>
        </sect3>
    </sect2>
</sect1>