1

PHP DOM でサポートされている DOM コア バージョンとは? ( list )のようにリストされているさまざまなものがあることがわかります:

どちらがサポートされていますか?

4

2 に答える 2

1

PHP DOM 拡張機能には、ドキュメント オブジェクト モデル (コア) レベル 1機能があります。ヘルパー メソッドで実装されている機能をテストしてから、機能とバージョンをテストできます。ここでは 4 つの機能の概要を示します。

  • 1 つのコアバージョンが見つかりました: '1.0'
  • 4 つのXMLバージョンが見つかりました: '2.0'; '1.0'; ''; NULL
  • ゼロのHTMLバージョンが見つかりました。
  • ゼロのXHTMLバージョンが見つかりました。
  • ゼロのXPathバージョンが見つかりました。

この結果を仕様と組み合わせると、難解ではないにしても不可解です。レベル 1.0コア機能は、指定されていないバージョン (ここでは forおよび) に対しても返す必要がありますが、結果が示すように、そうではありません。だから、DOM Core Level 1 が機能として発表されても、それも壊れています。TRUE''NULL

またレベル 2.0のコア機能がサポートされていない場合、 XML機能をレベル 2.0 にすることはできません。コア レベル 2.0 はサポートされている機能ではありません

DOM の機能 ( source ):

DOM の機能

サンプルスクリプトの出力例:

Core Feature is in PHP DOMDocument implementation:

    1.) Core '3.0': FALSE
    2.) Core '2.0': FALSE
    3.) Core '1.0': TRUE
    4.) Core ''   : FALSE
    5.) Core NULL : FALSE

One Core versions found: '1.0'.

XML Feature is in PHP DOMDocument implementation:

    1.) XML '3.0': FALSE
    2.) XML '2.0': TRUE
    3.) XML '1.0': TRUE
    4.) XML ''   : TRUE
    5.) XML NULL : TRUE

Four XML versions found: '2.0'; '1.0'; ''; NULL.

HTML Feature is in PHP DOMDocument implementation:

    1.) HTML '3.0': FALSE
    2.) HTML '2.0': FALSE
    3.) HTML '1.0': FALSE
    4.) HTML ''   : FALSE
    5.) HTML NULL : FALSE

Zero HTML versions found.

XHTML Feature is in PHP DOMDocument implementation:

    1.) XHTML '3.0': FALSE
    2.) XHTML '2.0': FALSE
    3.) XHTML '1.0': FALSE
    4.) XHTML ''   : FALSE
    5.) XHTML NULL : FALSE

Zero XHTML versions found.

XPath Feature is in PHP DOMDocument implementation:

    1.) XPath '3.0': FALSE
    2.) XPath '2.0': FALSE
    3.) XPath '1.0': FALSE
    4.) XPath ''   : FALSE
    5.) XPath NULL : FALSE

Zero XPath versions found.

スクリプト例:

<?php
/**
 * What is the DOM Core Version is Supported by PHP DOM?
 * @link http://stackoverflow.com/a/17340953/367456
 */

$dom = new DOMDocument();
$dom->loadXML('<root/>');

$versionsArray = ['3.0', '2.0', '1.0', '', NULL];
$features      = [
    # Document Object Model (DOM) <http://www.w3.org/DOM/DOMTR>
    'Core'  => $versionsArray,

    # Document Object Model (DOM) <http://www.w3.org/DOM/DOMTR>
    'XML'   => $versionsArray,

    # Document Object Model (DOM) Level 2 HTML Specification <http://www.w3.org/TR/DOM-Level-2-HTML/>
    'HTML'  => $versionsArray,
    'XHTML' => $versionsArray,

    # Document Object Model XPath <http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html>
    "XPath" => $versionsArray,
];

const DISPLAY_TITLE   = 1;
const DISPLAY_DETAILS = 2;
const DISPLAY_SUMMARY = 4;
const DISPLAY_ALL     = 7;

dom_list_features($dom, $features);

function dom_list_features(DOMDocument $dom, array $features, $display = DISPLAY_ALL) {

    foreach ($features as $feature => $versions) {
        dom_list_feature($dom, $feature, $versions, $display);
    }
}

function dom_list_feature(DOMDocument $dom, $feature, array $versions, $display) {

    if ($display & DISPLAY_TITLE) {
        echo "$feature Feature is in PHP DOMDocument implementation:\n\n";
    }

    $found = [];

    foreach ($versions as $i => $version) {
        $result = $dom->implementation->hasFeature($feature, $version);
        if ($result) {
            $found[] = $version;
        }

        if ($display & DISPLAY_DETAILS) {
            printf("    %d.) $feature %' -5s: %s\n", $i + 1, var_export($version, true), $result ? 'TRUE' : 'FALSE');
        }
    }

    if ($display & DISPLAY_DETAILS) {
        echo "\n";
    }

    $formatter = new NumberFormatter('en_UK', NumberFormatter::SPELLOUT);
    $count     = ucfirst($formatter->format(count($found)));
    $found     = array_map(function ($v) {
        return var_export($v, TRUE);
    }, $found);

    if ($display & DISPLAY_SUMMARY) {
        printf("%s %s versions found%s.\n\n", $count, $feature, $found ? ': ' . implode('; ', $found) : '');
    }
}
于 2013-06-27T10:40:25.837 に答える