Прошу помощи! Нужно эту xml http://ntdtv.ru/xml/content/all/news.xml отредактировать, получить на выходе новую xml. Столкнулся вот с такой проблемой, с XML я на php не работал... Как это надо сделать : 1. содержимое тега <article> присвоить в новой xml тегу <description> 2. description в новой xml должен быть в <![CDATA[ ]] 3. Содержимое тега <video> должно быть перенесено в description в виде кода плеера, примерно так: <object type="application/x-shockwave-flash" data="ЗНАЧЕНИЕ ТЕГА video " width="400" height="300"> <param name="quality" value="high"> <param name="wmode" value="opaque"> </object> 4. Значение тега <image> в новой xml должно быть перенесено в <enclousure> Объясните хотя бы 1й пункт, а там я уж сам. Перерыл много инета, но как применить к моему случаю не знаю. Прошу не кидать мне ссылки на маны...
Таки мана http://www.php.ru/manual/class.xsltprocessor.html Добавлено спустя 6 минут 3 секунды: Код (PHP): <?php header("Content-type: text/xml"); $doc = new DOMDocument(); $doc->load('news.xml'); //твой xml $xsl= new DOMDocument(); $xsl->load('news.xsl'); //твой xslt-шаблон $proc= new XSLTProcessor(); $proc->importStyleSheet($xsl); echo $proc->transformToXML($doc); ?> Добавлено спустя 11 минут 37 секунд: Для того, чтобы с урла грузить - можно попробовать так: Код (PHP): $doc->loadXML(file_get_contents($url)); Добавлено спустя 36 минут 27 секунд:Шаблон news.xsl Код (PHP): <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="utf-8" indent="yes"/> код шаблона </xsl:stylesheet> раздупляем для начала корневой тег xml-а: Код (PHP): <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="utf-8" indent="yes"/> <xsl:template match="rss"> </xsl:template> </xsl:stylesheet> Потом для каждого item... короче: Код (PHP): <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="utf-8" indent="yes"/> <xsl:template match="rss"> <rss2 version="2.0"> <xsl:apply-templates select="channel"/> </rss2> </xsl:template> <xsl:template match="channel"> <channel> <title> <xsl:value-of select="title" /> </title> <link> <xsl:value-of select="link" /> </link> <description> <xsl:value-of select="description" /> </description> <xsl:apply-templates select="item"/> </channel> </xsl:template> <xsl:template match="item"> <item> <xsl:attribute name="id"> <xsl:value-of select="@id" /> </xsl:attribute> <title> <xsl:value-of select="title" /> </title> <pubDate> <xsl:value-of select="pubDate" /> </pubDate> <guid> <xsl:attribute name="isPermaLink"> <xsl:value-of select="guid/@isPermaLink" /> </xsl:attribute> </guid> <link> <xsl:value-of select="link" /> </link> <description> <xsl:value-of select="article" /> <xsl:value-of select="description" /> </description> </item> </xsl:template> </xsl:stylesheet> Ну а там ты уже сам. Почитай книжечки по xml, по xslt и по xpath, чтобы легче было въехать. Читать придется много и по несколько раз, потому что xslt - язык с высоким порогом вхождения, это тебе не в php говнокодить. Но за месяц освоишь. Работоспособность не проверял, так что если косяки полезут - пиши. Добавлено спустя 7 минут 3 секунды: Так-же пригодятся disable-output-escaping="yes", чтобы html-сущностями не заменяло <xsl:copy-of select="" /> - чтобы оставить cdat-у но предварительно надо элемент прописать в output, в атрибут cdata-section-elements