2011-05-13 105 views
1

是否可以將XSL-FO轉換爲XHTML?我曾嘗試RenderX樣式表fo2html.xsl但輸出完全中斷。將xsl-fo轉換爲(x)html?

我想要實現的是讓用戶編輯Flash應用程序(AS2)中的XSL-FO內容;所以我想將它轉換爲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; 

其中$看起來像這樣:

<?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> 
+0

什麼是renderX樣式表輸出的「完全破壞」?我之前使用過它們,它們工作得很好。 – 2011-05-14 00:22:48

+1

你可以發佈你的Html輸出嗎? – kitensei 2011-05-18 09:02:18

+1

我認爲從頭開始很難做到。也許你的問題應該顯示一點XSLT,否則你期望哪種類型的答案? – 2011-06-21 04:51:08

回答

0

XSL-FO爲XML,所以使用以下命令: