Как вставить изображение с помощью XSLT? - PullRequest
2 голосов
/ 06 декабря 2011

Здравствуйте. Я пытаюсь создать отчеты 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, но теперь, когда мне нужно вставить изображения в отчет, я не знаю, как это сделать?

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...