質問

私は最終的にはgzip圧縮された後、ページ上に印刷された文書を保持するための責任があるDocumentクラスを持っています。そのドキュメント内のドキュメントのDOCTYPEを保持しています。私が直面しています問題は、正しく文書型を表示する実装する方法である。

たとえば:私が最も頻繁に使用されている人気のDoctypeの配列を作成することができ、あなたが「厳しい」と入力した場合、その後、それが自動的にHTML 4.01 Strictを選ぶだろう。知られDOCTYPEがない場合、それはあなたがカスタムDOCTYPEに入力していると仮定して、ちょうどあなたが入力したものを表示することができます。これは、エラーが発生しやすいと思わclumbsyます。

    $document->setDoctype("strict");

    ..... in a class far, far, away........
    function setDocType($type)
    {
        if(in_array($type, $this->doctypes))
         {
             $this->doctype = $this->doctypes[$type];
         }
         else
         {
             $this->doctype = $type;
         }
    }

それを行うための別の方法は、単純に全体のDOCTYPEに毎回入力する必要がすることです。

$document->setDoctype('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">');

あなたはこの問題に対処する方法を?

役に立ちましたか?

解決

カスタム文書型を入力できるようにしたい場合は、

これは依存しています。あなたがそのような状況の例外を考慮すれば、誰かが未定義のDOCTYPEを使用しようとしたとき、あなたはおそらく、例外をスローする必要があります。また、実際のDOCTYPEを設定する前に、そのメソッドを使用してカスタムDOCTYPEと力を定義するための方法を提供することができます。

私はこのような何かをするだろう

class Document {
    private $doctypes = array(
        'html4' => '...',
        'xhtml1strict' => '...'
    );

    private $doctype = null;

    public function addCustomDocType($name, $definition) {
        if (empty($this->doctypes[$name])) {
            $this->doctypes[$name] = $definition;
        } else {
            throw new Exception('Definition already exists');
        }
    }

    public function setDocType($name) {
        if (!empty($this->doctypes[$name])) {
            $this->doctype = $this->doctypes[$name];
        } else {
            throw new Exception('Doctype not found');
        }
    }
}

あなたはDOCTYPE定義を入力する必要があります第二の溶液は、IMO醜いであり、私はそれを避けるだろう。

他のヒント

私はあなただけのdoctype W3Cのリストをチェックアウトするべきだと思います。 http://www.w3.org/QA/2002/ 04 /有効-DTD-するlist.htmlする

ユーザーがカスタムDOCTYPEに入ることを許可されていますか?

おそらく、基本クラスを作成します。

ドキュメント

そして元、それぞれのタイプにそれを拡張します:

StrictDocは、ドキュメントを拡張します など。

そして、それはそれぞれの独自のドキュメントタイプを設定します。あなたはドキュメントタイプに追加したい場合は、単にドキュメントを拡張する別のクラスを作成します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top