Intereting Posts

Инструкция по установке SimpleXML вставки (таблица стилей)

Я хочу интегрировать XSL файл в XML строку, полученную мной командой php CURL . Я попробовал это

 $output = XML gived me by curl option; $hotel = simplexml_load_string($output); $hotel->addAttribute('?xml-stylesheet type=”text/xsl” href=”css/stile.xsl”?'); echo $hotel->asXML(); 

Выполняя это, когда я вижу XML в браузере, я получаю файл без таблицы стилей. Где моя ошибка?

Элемент SimpleXMLElement не позволяет по умолчанию создавать и добавлять в узел инструкцию обработки (PI). Однако сестра DOMDocument библиотеки позволяет это. Вы можете выйти замуж за этих двух, простираясь от SimpleXMLElement и создать функцию для обеспечения этой функции:

 class MySimpleXMLElement extends SimpleXMLElement { public function addProcessingInstruction($target, $data = NULL) { $node = dom_import_simplexml($this); $pi = $node->ownerDocument->createProcessingInstruction($target, $data); $result = $node->appendChild($pi); return $this; } } 

Это легко использовать:

 $output = '<hotel/>'; $hotel = simplexml_load_string($output, 'MySimpleXMLElement'); $hotel->addProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="style.xsl"'); $hotel->asXML('php://output'); 

Примерный выпуск (украшенный):

 <?xml version="1.0"?> <hotel> <?xml-stylesheet type="text/xsl" href="style.xsl"?> </hotel> 

Другой способ – вставить XML-фрагмент в элемент simplexml: «PHP SimpleXML: вставить узел в определенную позицию» или «Вставить XML в SimpleXMLElement» .