php - xml DOM支持的DOM核心级别/版本?

  显示原文与译文双语对照的内容
140 5

PHP DOM支持的DOM核心版本是什么? 我可以看到有很多不同的东西如( 列表 ) 所示:

支持哪一个?

时间: 原作者:

143 5

dom核心版本依赖于 libxml2 版本 PHP 。 你甚至可以在幕后替换库的二进制版本,而不需要重新编译 php 。 我知道,但是一旦我这么做了,因为libxml2的libxml2版本有了一个)

在 PHP @hakre's 中运行时检测这个特性是一个不错的Fragment

原作者:
64 4

Extension扩展具有文档对象模型( 核心层) 级别 1 特性。 可以测试使用 helper 方法实现的功能,然后测试功能和版本,这里总结了四个功能:

  • 找到了一个核心版本: '1.0'
  • 找到了四个版本: '2.0'; '1.0'; ''; NULL
  • 找到了零版本的HTML文档。
  • 发现了0 个版本。
  • found 找到了XPath版本。

这个结果与规格结合在一起,如果没有,则是 esoteric esoteric的esoteric 。 第级中的核心功能要求在没有指定版本的情况下返回 TRUE ( 在这里: 但是,对于 ''NULL 而言,它并没有。 因此,即使是DOM核心级别 1也被宣布为特性,它也被打破了。

同样,如果不支持级别 2.0,则不能为第2 级功能。if Core核心级别为。这里的核心级别 2.0是不支持的,这是一个支持的特性。

DOM ( 源代码) 中的特性:

Features in 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:nn";


 }



 $found = [];



 foreach ($versions as $i => $version) {


 $result = $dom->implementation->hasFeature($feature, $version);


 if ($result) {


 $found[] = $version;


 }



 if ($display & DISPLAY_DETAILS) {


 printf(" %d.) $feature %' -5s: %sn", $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.nn", $count, $feature, $found? ': '. implode('; ', $found) : '');


 }


}



原作者:
...