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

    <para>
        Gültige <acronym>HTML</acronym> und <acronym>XHTML</acronym> Dokumente sollten eine
        <constant>DOCTYPE</constant> Deklaration enthalten. Neben der Schwierigkeit sich diese zu
        merken, können Sie auch beeinflussen wie bestimmte Elemente im Dokument dargestellt werden
        sollen (zum Beispiel, CDATA Kommentierung in <emphasis>&lt;script&gt;</emphasis> und
        <emphasis>&lt;style&gt;</emphasis> Elementen.
    </para>

    <para>
        Der <classname>Doctype</classname> Helfer erlaubt die Spezifikation von einem der folgenden
        Typen:
    </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>
        Es kann auch ein eigener DocType spezifiziert werden solange dieser richtig formatiert ist.
    </para>

    <para>
        Der <classname>Doctype</classname> Helfer ist eine konkrete Implementation des
        <link linkend="zend.view.helpers.initial.placeholder">Platzhalter Helfers</link>.
    </para>

    <example id="zend.view.helpers.initial.doctype.basicusage">
        <title>Grundsätzliche Verwendung des Doctype Helfers</title>

        <para>
            Der Doctype kann jederzeit spezifiziert werden. Trotzdem werden Helfer die vom Doctype
            abhängen, diesen erst erkennen wenn er gesetzt wurde, sodas der einfachste Weg darin
            besteht Ihn in der Bootstrap zu spezifizieren:
        </para>

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

        <para>
            Und Ihn dann am Beginn des Layout Scripts ausgeben:
        </para>

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

    <example id="zend.view.helpers.initial.doctype.retrieving">
        <title>Empfangen des Doctypes</title>

        <para>
            Wenn man den Doctype wissen will, kann einfach <methodname>getDoctype()</methodname> auf
            dem Objekt aufgerufen werden, welches vom aufgerufenen Helfer zurückgegeben wird.
        </para>

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

        <para>
            Typischerweise wird man einfach wissen wollen, ob der Doctype <acronym>XHTML</acronym>
            ist oder nicht; hierfür ist die <methodname>isXhtml()</methodname> Methode ausreichend:
        </para>

        <programlisting language="php"><![CDATA[
if ($view->doctype()->isXhtml()) {
    // etwas anderes machen
}
]]></programlisting>

        <para>
            Man kann auch prüfen ob der Doctype ein <acronym>HTML5</acronym> Dokument repräsentiert
        </para>

        <programlisting language="php"><![CDATA[
if ($view->doctype()->isHtml5()) {
    // etwas anderes machen
}
]]></programlisting>
    </example>

    <example id="zend.view.helpers.initial.doctype.xhtml1_rdfa">
        <title>
            Eine geeignete Dokumenttypdeklaration für die Arbeit mit dem Open
            Graph Protokoll wählen
        </title>

        <para>
            Um das <ulink url="http://opengraphprotocol.org/">
            Open Graph Protokoll</ulink> zu implementieren, muss
            <constant>XHTML1_RDFA</constant> als Dokumenttypdeklaration gesetzt werden.
            Diese Dokumenttypdeklaration erlaubt es Entwicklern, das
            <ulink url="http://www.w3.org/TR/xhtml-rdfa-primer/">Resource Description
            Framework</ulink> innerhalb von <acronym>XHTML</acronym>-Dokumenten
            zu verwenden.
        </para>

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

        <para>
        Der RDFa-Dokumenttyp erlaubt eine erfolgreiche Validierung von XHTML-Dokumenten,
        wenn das Meta-Tag-Attribute 'property' aus dem Open Graph-Protokoll
        verwendet wird. Beispielanwendung innerhalb eines View-Skripts:
        </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>
            Im vorangegangenen Beispiel wurde das Attribut 'property' auf den Wert
            'og:type' gesetzt. 'og' bezieht sich dabei auf den Open Graph-Namensraum,
            welcher im HTML-Element definiert wurde.
            Die obige Angabe weist den Inhalt des Dokumentes als Seite über einen
            Musiker aus. Je nach Inhalt einer Seite, muss der
            <link linkend="zend.view.helpers.initial.headmeta">HeadMeta-Helfer</link>,
            - innerhalb einer Applikation - gesondert aufgerufen werden.
            Weitere mögliche Angaben sind in der
            <ulink url="http://opengraphprotocol.org/">Open Graph Protokoll-Dokumentation</ulink>
            aufgeführt.
        </para>

        <para>
            Nachfolgend ein Beispiel, wie man prüfen kann, ob die Dokumenttypdeklaration
            <constant>XHTML1_RDFA</constant> entspricht:
        </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>
</sect3>
