Имеется XML файл, содержащий какую либо информацию. Но для работы с ним нужно изменить структуру файла.
Имеющийся XML:
Нам необходимо достать содержимое тега LargeImage:
Для этого воспользуемся следующей структурой XSL:
на выходе получаем следующий результат
PHP код:
Имеющийся XML:
<?xml version="1.0" encoding="UTF-8"?><Item> <ASIN>1234567</ASIN> <LargeImage> <URL>some_url</URL> <Height Units="pixels">307</Height> <Width Units="pixels">500</Width> </LargeImage> <ItemAttributes> <Binding>Category</Binding> <Brand>SomeBrand</Brand> </ItemAttributes> </Item>
Нам необходимо достать содержимое тега LargeImage:
Для этого воспользуемся следующей структурой XSL:
<?xml version='1.0'?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="Item"> <xsl:for-each select="LargeImage//*"> <xsl:element name="{local-name(.)}"> <xsl:value-of select="."/> </xsl:element> </xsl:for-each> </xsl:template> </xsl:stylesheet>
на выходе получаем следующий результат
<?xml version="1.0" encoding="UTF-8"?><URL>some_url</URL><Height>307</Height><Width>500</Width>
PHP код:
$xslDoc = new DOMDocument();$xslDoc->load("example.xsl"); $xmlDoc = new DOMDocument();$xmlDoc->load("item.xml"); $proc = new XSLTProcessor();$proc->importStylesheet($xslDoc); $result = $proc->transformToXML($xmlDoc);
file_put_contents('var/result-'.time().'.xml', $result);