Могу ли я отобразить все HTML-теги в спецификации W3C с помощью DOM? - PullRequest
2 голосов
/ 21 ноября 2010

Я использую этот простой PHP HTML-парсер: http://simplehtmldom.sourceforge.net. Можно ли использовать его для отображения всех тегов спецификации HTML?

Ответы [ 3 ]

5 голосов
/ 21 ноября 2010

Вот, пожалуйста:

$dom = new DOMDocument;
$dom->load('http://www.w3.org/2002/08/xhtml/xhtml1-transitional.xsd');
$xsns = 'http://www.w3.org/2001/XMLSchema';
$elements = array();
foreach ($dom->getElementsByTagNameNS($xsns, 'element') as $element) {
    if ($element->hasAttribute('name')) {
        echo $element->getAttribute('name');
        $docs = $element->getElementsByTagNameNS($xsns, 'documentation');
        foreach ($docs as $doc) {
            echo "\t", $doc->nodeValue;
        }
        echo PHP_EOL;
    }
}

Приведенный выше код выведет все типы элементов в определении схемы (не DTD) для XHTML1 Transitional (не HTML) плюс любая документация, например

pre
      content is "Inline" excluding
         "img|object|applet|big|small|sub|sup|font|basefont"

Для этого используется собственное расширение PHP DOM. Расширение DOM использует libxml снизу и превосходит SimpleHtmlDom с точки зрения скорости и предлагает контроль над разметкой. Интерфейс DOM представляет собой независимую от языка спецификацию W3C .

Альтернативы расширению DOM см.

1 голос
/ 21 ноября 2010

Нет, этот синтаксический анализатор является простым анализатором HTML, у него нет возможности анализировать DTD, и его внутренняя логика для обработки элементов HTML не раскрывается (или даже выражается таким образом, что это делает представление в удобочитаемой для человека форме даже незначительным). удобно).

0 голосов
/ 21 ноября 2010

В документации написано

// Dumps the internal DOM tree back into string
$str = $html;

// Print it!
echo $html; 

Я думаю, что эхо должно быть $ str, а не $ html, но это то, что написано в документации.


// Dumps the internal DOM tree back into string
$str = $html->save();

// Dumps the internal DOM tree back into a file
$html->save('result.htm');

Надеюсь, этопомогает.

Документация: http://simplehtmldom.sourceforge.net/manual.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...