Здравствуйте. Я пытаюсь создать отчеты MS-Word из приложения PHP.Для этого я преобразую данные XML в Microsoft Office Open XML с помощью XSLT-преобразований .
У меня есть простой файл XML для извлечения данных:
<?xml version="1.0" encoding="UTF-8"?>
<Movies>
<Genre name="Action">
<Movie>
<Name>Crash</Name>
<Released>2005</Released>
</Movie>
</Genre>
<Genre name="Drama">
<Movie>
<Name>The Departed</Name>
<Released>2006</Released>
</Movie>
<Movie>
<Name>The Pursuit of Happyness</Name>
<Released>2006</Released>
</Movie>
</Genre>
<Genre name="Comedy">
<Movie>
<Name>The Bucket List</Name>
<Released>2007</Released>
</Movie>
</Genre>
</Movies>
У меня также есть XSLT-файл, который преобразует XML в MS Office XML:
<xsl:for-each select="Movies/Genre">
<w:p w:rsidR="00EC137C" w:rsidRPr="00BF ...
<w:pPr>
<w:pStyle w:val="Heading2"/>
</w:pPr>
<w:r w:rsidRPr="00BF350E">
<w:t>
<xsl:value-of select="@name"/>
</w:t>
</<xsl:value-of select w:r>
</w:p>
<xsl:for-each select="Movie">
<w:p w:rsidR="00EC137C" w:rsidRPr="00EC1 ...
<w:pPr>
<w:pStyle w:val="ListParagraph"/>
<w:numPr>
<w:ilvl w:val="0"/>
<w:numId w:val="1"/>
</w:numPr>
</w:pPr>
<w:r w:rsidRPr="00BF350E">
<w:rPr>
<w:b/>
</w:rPr>
<w:t>
<xsl:value-of select="Name"/>
</w:t>
</w:r>
<w:r w:rsidR="00C46B60">
<w:t xml:space="preserve"> (<xsl:value-of select="Released"/>)
</w:t>
</w:r>
</w:p>
</xsl:for-each>
</xsl:for-each>
...
, а также скрипт PHP:
<?php
//Declare variables for file names.
$xmlDataFile = "MyMovies.xml";
$xsltFile = "MyMovies.xslt";
$sourceTemplate = "MyMoviesTemplate.docx";
$outputDocument = "MyMovies.docx";
//Load the xml data and xslt and perform the transformation.
$xmlDocument = new DOMDocument();
$xmlDocument->load($xmlDataFile);
$xsltDocument = new DOMDocument();
$xsltDocument->load($xsltFile);
$xsltProcessor = new XSLTProcessor();
$xsltProcessor->importStylesheet($xsltDocument);
//After the transformation, $newContentNew contains
//the XML data in the Open XML Wordprocessing format.
$newContent = $xsltProcessor->transformToXML($xmlDocument);
//Copy the Word 2007 template document to the output file.
if (copy($sourceTemplate, $outputDocument)) {
//Open XML files are packaged following the Open Packaging
//Conventions and can be treated as zip files when
//accessing their content.
$zipArchive = new ZipArchive();
$zipArchive->open($outputDocument);
//Replace the content with the new content created above.
//In the Open XML Wordprocessing format content is stored
//in the document.xml file located in the word directory.
$zipArchive->addFromString("word/document.xml", $newContent);
$zipArchive->close();
echo "Processing Complete";
}
?>
Теперь мне нужно вставить изображения в отчеты,Что я должен иметь в файле XML и что я должен иметь в файле XSLT?Я новичок в XML и XSLT. Я только что взял пример из msdn, но теперь, когда мне нужно вставить изображения в отчет, я не знаю, как это сделать?
С уважением