XMLWriter не может записывать в элемент <head> - PullRequest
0 голосов
/ 12 февраля 2012

Iv обнаружил, что невозможно записать какой-либо контент (текст или другие элементы) в элемент head, например

$XML = new XMLWriter();
$XML->openMemory();
$XML->startElement("head");
$XML->writeAttribute("id","head");
$XML->text("lable");
$XML->endElement();
$XML->startElement("div");
$XML->text("div");
$XML->endElement();
echo $XML->outputMemory();

будет выводить элементы в теле, а не в голове, но это дает правильные атрибуты:

<html>
<head id="head">
</head>
<body>
lable
<div>
div
</div>
</body>
</html>

Почему я не могу написать какой-либо контент в голову?

Ответы [ 2 ]

1 голос
/ 12 февраля 2012

HTML не поддерживает наличие текста или связанных с содержимым элементов в его <head>. Из рекомендации W3C :

Элемент HEAD содержит информацию о текущем документе, такую ​​как его заголовок, ключевые слова, которые могут быть полезны для поисковых систем, и другие данные, которые не считаются содержимым документа.

Обычно основными элементами, которые вы хотите записать в заголовок HTML, являются элемент <title> и любые элементы <meta>. Я предполагаю, что будет работать следующее:

$XML = new XMLWriter();
$XML->openMemory();
$XML->startElement("head");
$XML->writeAttribute("id","head");
$XML->startElement("title");
$XML->text("My HTML page");
$XML->endElement();
$XML->endElement();
$XML->startElement("div");
$XML->text("div");
$XML->endElement();
echo $XML->outputMemory();
0 голосов
/ 12 февраля 2012

Запустив точно такой же скрипт, который вы указали выше, я получаю следующий результат:

<head id="head">lable</head><div>div</div>

Поскольку в вашем коде даже нет элемента body или html, может быть, есть что-то постобработка вывода, сгенерированного вашим кодом PHP?

...