<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 24604 -->
<sect3 id="zend.view.helpers.initial.doctype">
    <title>Doctype ヘルパー</title>

    <para>
        正しい形式の <acronym>HTML</acronym> ドキュメントおよび <acronym>XHTML</acronym> ドキュメントには、
        <constant>DOCTYPE</constant> 宣言が必要です。
        覚えておくことが難しいというだけではなく、
        これらは特定の要素のレンダリング方法
        (たとえば、<emphasis>&lt;script&gt;</emphasis> や
        <emphasis>&lt;style&gt;</emphasis> 要素における CDATA
        のエスケープ方法) に影響を与えます。
    </para>

    <para>
        <classname>Doctype</classname> ヘルパーは、以下のいずれかの形式を指定します。
    </para>

    <itemizedlist>
        <listitem><para><constant>XHTML11</constant></para></listitem>
        <listitem><para><constant>XHTML1_STRICT</constant></para></listitem>
        <listitem><para><constant>XHTML1_TRANSITIONAL</constant></para></listitem>
        <listitem><para><constant>XHTML1_FRAMESET</constant></para></listitem>
        <listitem><para><constant>XHTML1_RDFA</constant></para></listitem>
        <listitem><para><constant>XHTML_BASIC1</constant></para></listitem>
        <listitem><para><constant>HTML4_STRICT</constant></para></listitem>
        <listitem><para><constant>HTML4_LOOSE</constant></para></listitem>
        <listitem><para><constant>HTML4_FRAMESET</constant></para></listitem>
        <listitem><para><constant>HTML5</constant></para></listitem>
    </itemizedlist>

    <para>
        整形式なものであれば、独自の doctype を追加できます。
    </para>

    <para>
        <classname>Doctype</classname> ヘルパーは、
        <link linkend="zend.view.helpers.initial.placeholder">Placeholder ヘルパー</link>
        の具象実装です。
    </para>

    <example id="zend.view.helpers.initial.doctype.basicusage">
        <title>Doctype ヘルパーの基本的な使用法</title>

        <para>
            doctype は、いつでも指定できます。
            しかし、doctype によって出力を切りかえるヘルパーを使用する場合は
            まず doctype を設定してからでないと動作しません。もっともシンプルな使用法は、
            レイアウトスクリプトの先頭で指定と出力を同時に行うことでしょう。
        </para>

        <programlisting language="php"><![CDATA[
$doctypeHelper = new Zend_View_Helper_Doctype();
$doctypeHelper->doctype('XHTML1_STRICT');
]]></programlisting>

        <para>
            そして、それをレイアウトスクリプトの先頭で表示します。
        </para>

        <programlisting language="php"><![CDATA[
<?php echo $this->doctype() ?>
]]></programlisting>

    </example>

    <example id="zend.view.helpers.initial.doctype.retrieving">
        <title>Doctype の取得</title>

        <para>
            doctype を知りたくなったら、オブジェクトの
            <methodname>getDoctype()</methodname> をコールします。
            このオブジェクトは、ヘルパーを起動した際に取得できるものです。
        </para>

        <programlisting language="php"><![CDATA[
$doctype = $view->doctype()->getDoctype();
?>]]></programlisting>

        <para>
            一般的な使用法としては、doctype が <acronym>XHTML</acronym>
            か否かを調べるということがあります。それ用のメソッドとしては
            <methodname>isXhtml()</methodname> があります。
        </para>

        <programlisting language="php"><![CDATA[
if ($view->doctype()->isXhtml()) {
    // 何かをします
}
]]></programlisting>

        <para>
            doctype が <acronym>HTML5</acronym> 文書を表すかどうかチェックすることもできます。
        </para>

        <programlisting language="php"><![CDATA[
if ($view->doctype()->isHtml5()) {
    // 何かをします
}
]]></programlisting>
    </example>

    <example id="zend.view.helpers.initial.doctype.xhtml1_rdfa">
        <title>Open Graph プロトコルで使用する Doctype を選択</title>

        <para>
            <ulink url="http://opengraphprotocol.org/">Open Graph プロトコル</ulink>を実装するには、
            XHTML1_RDFA doctype を指定するでしょう。この doctype により、開発者は
            <acronym>XHTML</acronym> 文書内で<ulink
                url="http://www.w3.org/TR/xhtml-rdfa-primer/">Resource Description Framework</ulink>
            を使用できるようになります。
        </para>

        <programlisting language="php"><![CDATA[
$doctypeHelper = new Zend_View_Helper_Doctype();
$doctypeHelper->doctype('XHTML1_RDFA');
]]></programlisting>

        <para>
        'property' メタタグ属性が Open Graph プロトコル仕様の通りに使用されると、
        RDFa doctype により、XHTMLでの検証が可能になります。
        ビュースクリプト内部の例です。
        </para>

        <programlisting language="html"><![CDATA[
<?php echo $this->doctype('XHTML1_RDFA'); ?>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:og="http://opengraphprotocol.org/schema/">
<head>
   <meta property="og:type" content="musician" />
]]></programlisting>

        <para>
            前記の例では、property に og:type を設定しました。
            og は、HTMLタグで指定した Open Graph 名前空間を参照します。
            content は、そのページが musician （音楽家）についてのものであることを特定します。
            サポートされるプロパティについては、<ulink
                url="http://opengraphprotocol.org/">Open Graph プロトコル・ドキュメント</ulink>
            をご覧下さい。<link
                linkend="zend.view.helpers.initial.headmeta">HeadMeta ヘルパー</link>は、
            それらの Open Graph プロトコルのメタタグをプログラム的に設定するために使用されるかもしれません。
        </para>

        <para>
            これは、もし XHTML1_RDFA に設定された場合にチェックする方法です。
        </para>

        <programlisting language="php"><![CDATA[
<?php echo $this->doctype() ?>
<html xmlns="http://www.w3.org/1999/xhtml"
      <?php if ($view->doctype()->isRdfa()): ?>
      xmlns:og="http://opengraphprotocol.org/schema/"
      xmlns:fb="http://www.facebook.com/2008/fbml"
      <?php endif; ?>
>
]]></programlisting>

    </example>
</sect3>
<!--
vim:se ts=4 sw=4 et:
-->
