2012-02-25 11 views
6

मैं xslt को xsl-fo में बदलना चाहता हूं लेकिन मुझे सच में यकीन नहीं है कि मैं यह कर सकता हूं। मैं एक एक्सएमएल सूची को एक एक्सएसएल-एफओ सूची में बदलने की कोशिश करता हूं। क्या कोई मुझे बता सकता है कि मैं कहां देख सकता हूं कि मैं लंबे समय से गुगल रहा हूं, इस बारे में बहुत सारे उदाहरण नहीं हैं। मेरा एक्सएमएल इस तरह है।Xslt से xsl-fo रूपांतरण

<p>TEXT</p> 
<ul> 
    <li>Item1</li> 
    <li>Item2</li> 
</ul> 
<p>ANOTHERTEXT</p> 

मैं इस परिवर्तन के लिए उपयोग टेम्पलेट्स की कोशिश, लेकिन मेरे टेम्पलेट्स XSL-FO किसी को भी मुझे बता सकते हैं टेम्पलेट्स इस बदलाव में काम पाने के लिए काम नहीं करते। अगर वे काम करते हैं तो मुझे एक उदाहरण दिखा सकता है मैं किसी को नहीं ढूंढ सकता। मेरे objetive एक PDF तिनका fop मिल

धन्यवाद


यह मेरा XML दस्तावेज का हिस्सा मैं HTML में स्रोत के कुछ भागों recived है और मैं एक्सएमएल करने के लिए HTML बदल अब मैं एक्सएमएल परिवर्तित कोशिश (है तिनका एक सूची) एक्सएसएल-एफओ में एक्सएसएलटी को सफ़ेद करें। मेरी समस्या यह है कि मैं इस परिवर्तन के लिए टेम्पलेट्स का पालन नहीं कर सकता। मेरा अंतिम objetive एक पीडीएफ सफेद एफओपी मिलता है।

धन्यवाद

अद्यतन

यह मेरा एक्सएमएल है:

<Memoria> 
    <name>TITLE</name> 
    <Index>INDEX 2010</Index> 
    <Seccion> 
    <name>INFORMATION</name> 
    <Contenido> 
     <p>TEXT</p> 
     <ul> 
    <li>ITEM1</li> 
    <li>ITEM2</li> 
     </ul> 
     <p>ANOTHER</p> 
    </Contenido> 
    </Seccion> 
</Memoria> 

मैं अपने समाधान धन्यवाद सभी

+1

एचटीएमएल XSL-FO करने के लिए एक 100% अनुवाद नहीं है। – driis

+0

सटीक वांछित परिणाम क्या है? कृपया, प्रश्न संपादित करें और प्रदान करें। एक्सएसएलटी विशेषज्ञ शायद ही कभी xsl-fo - cognizant भी हैं। –

उत्तर

6

आप काम नहीं कर अपने टेम्पलेट के साथ समस्या हो रही है (इसी तरह कमांड लाइन से), यह एक नाम स्थान मुद्दा हो सकता है। आपको अपने एक्सएमएल के एक और सटीक उदाहरण के साथ प्रश्न को अद्यतन करना चाहिए।

यहां एक उदाहरण है।

एक्सएमएल इनपुट (अच्छी तरह से गठित किए जाने की तय)

<root> 
    <p>TEXT</p> 
    <ul> 
    <li>Item1</li> 
    <li>Item2</li> 
    </ul> 
    <p>ANOTHERTEXT</p> 
</root> 

XSLT 1।0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <xsl:output indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="/root"> 
    <fo:root> 
     <fo:layout-master-set> 
     <fo:simple-page-master master-name="my-page" page-width="8.5in" page-height="11in"> 
      <fo:region-body margin="1in" margin-top="1.5in" margin-bottom="1.5in"/> 
     </fo:simple-page-master> 
     </fo:layout-master-set> 
     <fo:page-sequence master-reference="my-page"> 
     <fo:flow flow-name="xsl-region-body"> 
      <xsl:apply-templates/> 
     </fo:flow> 
     </fo:page-sequence> 
    </fo:root> 
    </xsl:template> 

    <xsl:template match="p"> 
    <fo:block> 
     <xsl:apply-templates/> 
    </fo:block> 
    </xsl:template> 

    <xsl:template match="ul"> 
    <fo:list-block padding="4pt"> 
     <xsl:apply-templates/> 
    </fo:list-block> 
    </xsl:template> 

    <xsl:template match="li"> 
    <fo:list-item> 
     <fo:list-item-label end-indent="label-end()"> 
     <fo:block>&#x02022;</fo:block> 
     </fo:list-item-label> 
     <fo:list-item-body start-indent="body-start()"> 
     <fo:block> 
      <xsl:apply-templates/> 
     </fo:block> 
     </fo:list-item-body> 
    </fo:list-item>  
    </xsl:template> 
</xsl:stylesheet> 

XSL-FO उत्पादन

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <fo:layout-master-set> 
     <fo:simple-page-master master-name="my-page" page-width="8.5in" page-height="11in"> 
     <fo:region-body margin="1in" margin-top="1.5in" margin-bottom="1.5in"/> 
     </fo:simple-page-master> 
    </fo:layout-master-set> 
    <fo:page-sequence master-reference="my-page"> 
     <fo:flow flow-name="xsl-region-body"> 
     <fo:block>TEXT</fo:block> 
     <fo:list-block padding="4pt"> 
      <fo:list-item> 
       <fo:list-item-label end-indent="label-end()"> 
        <fo:block>•</fo:block> 
       </fo:list-item-label> 
       <fo:list-item-body start-indent="body-start()"> 
        <fo:block>Item1</fo:block> 
       </fo:list-item-body> 
      </fo:list-item> 
      <fo:list-item> 
       <fo:list-item-label end-indent="label-end()"> 
        <fo:block>•</fo:block> 
       </fo:list-item-label> 
       <fo:list-item-body start-indent="body-start()"> 
        <fo:block>Item2</fo:block> 
       </fo:list-item-body> 
      </fo:list-item> 
     </fo:list-block> 
     <fo:block>ANOTHERTEXT</fo:block> 
     </fo:flow> 
    </fo:page-sequence> 
</fo:root> 

अपाचे एफओपी उत्पादन

enter image description here

0

पहले परीक्षण कर रहा हूँ, सुनिश्चित करें कि आप एक एक्सएचटीएमएल फ़ाइल बनाने (कोई < br> आदि)। फिर fo फ़ाइल बनाने के लिए एक xslt परिवर्तन लागू करें, फिर उसे fop और पीडीएफ उभरने के लिए फ़ीड करें। शैली के लिए xslt की

स्निपेट: xslfo वाक्य रचना के लिए

<xsl:template match="html:body"> 
    <fo:page-sequence master-reference="all-pages"> 
     <fo:title> 
     <xsl:value-of select="/html:html/html:head/html:title"/> 
     </fo:title> 
     <fo:static-content flow-name="page-header"> 
     <fo:block font-weight="bold" font-size="16pt" space-before.conditionality="retain" xsl:use-attribute-sets="page-header"><!-- space-before="{$page-header-margin}" --> 
      <xsl:if test="$title-print-in-header = 'true'"> 
      <xsl:value-of select="/html:html/html:head/html:title"/> 
      </xsl:if> 
     </fo:block> 
     </fo:static-content> 
    </fo:page-sequence> 
    </xsl:template> 

चेक http://www.w3schools.com/xslfo/default.asp

चल रहे एफओपी पर जानकारी के लिए http://xmlgraphics.apache.org/fop/trunk/running.html देखें; fop.jar का डाउनलोड पास होना चाहिए।

उदाहरण के लिए VBA से चल रहा है इस प्रकार है:

Set shell = CreateObject("WScript.Shell") 
    cmd = "java -Dfop.home=" & baseDir & " -cp " & baseDir & "build\fop.jar org.apache.fop.cli.Main -fo " & foName & " -pdf " & pdfName 
Call shell.Run(cmd, vbWindowFrame, True)