конвертировать xsl-fo в (x) html? - PullRequest
1 голос
/ 13 мая 2011

Возможно ли преобразовать XSL-FO в XHTML? Я пробовал таблицу стилей RenderX fo2html.xsl , но вывод полностью не работает.

Я пытаюсь добиться того, чтобы пользователь мог редактировать содержимое XSL-FO в приложении Flash (AS2); поэтому я хотел бы преобразовать его в HTML, позволить пользователю отредактировать его, а затем преобразовать обратно в XSL-FO (и в конце концов в PDF в конце).

РЕДАКТИРОВАТЬ: фактически работает php 5.3.5 с apache 2.2

На самом деле это то, что я делаю:

$in = '.\\files\\in.fo';
$out = '.\\files\\out.fo';

// transform
$xp = new XSLTProcessor();
$xml = new DOMDocument();
$xml->loadXML(file_get_contents($in));
$style = new DOMDocument();
$style->load('D:\\apache\\htdocs\\mv\\last\\myvisit\\outils\\xslt\\stylesheets\\fo2html\\fo2html.xsl');
$xp->importStylesheet($style);
// XML > HTML
$html = $xp->transformToXML($xml);
echo $html;

где $ in выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
        <fo:simple-page-master margin-bottom="35.4pt" margin-left="70.85pt" margin-right="70.85pt" margin-top="35.4pt" master-name="pm0" page-height="841.9pt" page-width="595.3pt">
            <fo:region-body margin-bottom="35.45pt" margin-top="35.45pt" overflow="visible" region-name="body"/>
            <fo:region-before extent="771.1pt" overflow="visible" region-name="header"/>
            <fo:region-after display-align="after" extent="771.1pt" overflow="visible" region-name="footer"/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="pm0" orphans="2" white-space-collapse="false" widows="2">
        <fo:flow flow-name="body">
            <fo:block end-indent="0pt" line-height="13.7pt" start-indent="0pt" text-align="start" text-indent="0pt">
                <fo:inline font-family="Times Roman, serif" font-size="12pt">%%patient.identite%%</fo:inline>
            </fo:block>
            <fo:block line-height="13.7pt">
                <fo:leader line-height="13.7pt"/>
            </fo:block>
            <fo:block end-indent="0pt" line-height="13.7pt" start-indent="0pt" text-align="start" text-indent="0pt">
                <fo:inline font-family="Times Roman, serif" font-size="12pt">%%listePrescriptions[withCompoDecomposee,withLastAdmin]%%</fo:inline>
            </fo:block>
        </fo:flow>
    </fo:page-sequence>
</fo:root>

и вывод HTML выглядит следующим образом:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>XSL FO Document</title>
        <meta http-equiv="Content-Style-Type" content="text/css"/>
        <style type="text/css">
        <![CDATA[
            a { color: black; border: none; text-decoration: none; }
            img { border: none; } 
        ]]>
        </style>
    </head>
    <body bgcolor="white" marginwidth="6" marginheight="6" leftmargin="6" topmargin="6">
        <div>
        </div>
    </body>
</html>

1 Ответ

0 голосов
/ 03 октября 2013

XSL-FO - это XML, поэтому используйте следующее:

  • loadVariables для вызова сценария PHP во Flash
  • textArea отредактировать XSL-FO во Flash
  • sendAndLoad , чтобы отправить отредактированный документ обратно на сервер для преобразования PDF
...