Что такое версия DOM Core поддерживается PHP DOM? Я вижу, что в списке есть много разных ( список ):
Какой из них поддерживается?
Версия основного ядра зависит от версии libxml2, с которой связан PHP. Вы даже можете заменить двоичную версию библиотеки под капотом, не перекомпилируя php. (Это хаки и ограничено, я знаю, но однажды я это сделал, потому что у debian lenny версии libxml2 была ошибка)
Для обнаружения во время выполнения этих функций в ответах PHP @ hakre это хороший фрагмент
У расширения PHP DOM есть функция Object Object Model (Core) Level 1 . Вы можете протестировать функции, которые реализованы с помощью вспомогательного метода, а затем тестирование функций и версий, здесь сводка для четырех функций:
'1.0'
. '2.0'; '1.0'; ''; NULL
'2.0'; '1.0'; ''; NULL
'2.0'; '1.0'; ''; NULL
. Этот результат в сочетании со спецификациями является искаженным, если не эзотерическим . Основная функция на уровне 1.0 требует возврата TRUE
для не указанной версии (здесь: для ''
и NULL
), но, как показывают результаты, это не так. Таким образом, даже DOM Core Level 1 объявлен как функция, он также нарушен.
Кроме того, функция XML не может быть уровнем 2.0, если функция Core на уровне 2.0 не поддерживается – и это имеет место здесь, Core Level 2.0 не поддерживается.
Особенности в 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) : ''); } }