Запись XSL-t в документе XSL FO - PullRequest
1 голос
/ 25 мая 2011

Я новичок в XSL FO. У меня есть очень простой XML-документ:

<?xml version= "1.0" ?>
<test>
TEST
</test>

Я хотел бы напечатать содержимое между тегами <test>

Я написал следующий документ XLS FO для обработки в FOP.

<fo:root xmlns:yt="http://www.yseop.com/text/2" 
xmlns:y="http://www.yseop.com/engine/3" 
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


   <fo:layout-master-set>
      <fo:simple-page-master master-name="rapport">
         <fo:region-body margin-top="0.75in" margin-left="0.75in" margin-right="0.75in" margin-bottom="0.75in"/>
         <fo:region-after extent="0.25in"/>
         <fo:region-start/>
      </fo:simple-page-master>
   </fo:layout-master-set>

   <fo:page-sequence master-reference="rapport">

       <fo:flow flow-name="xsl-region-body">
            <fo:block>
            XXX
                <xsl:apply-templates select="document('D:\XXX-conseilVente\xmlBatch\input_test1.xml')/test"/>
            </fo:block>
      </fo:flow>
   </fo:page-sequence>



</fo:root>

Я получаю следующее предупреждение:

      [fop] 25 mai 2011 12:05:10 org.apache.fop.events.LoggingEventListener processEvent
      [fop] ATTENTION: Unknown formatting object "{http://www.w3.org/1999/XSL/Transform}apply-templates" encountered (a child of fo:block}. (See position 22:99)

и на моем выходе ничего нет pdf.

Думаю, я не использую правильную функцию для разбора документа с помощью xsl-t

Можете ли вы сказать мне, какую функцию использовать?

Заранее спасибо

1 Ответ

4 голосов
/ 25 мая 2011

XSLT и XSL-FO - это два разных языка. По сути, он работает наоборот, чем то, что вы делаете в данный момент: FO встроен в таблицу стилей XSLT, которая затем используется для обработки исходного XML для создания документа XSL-FO (без какого-либо XSLT). Это добавлено в процессор XSL-FO для создания, например, PDF.

    XSLT     processing
     |           |
XML ---> XSL-FO ---> PDF

Итак, вы начинаете с такой таблицы стилей XSLT (без пространств имен и тому подобного, просто чтобы дать вам представление):

<xslt:stylesheet>

  <xslt:template match="/">
    <fo:root>
      <!-- fo head -->
      <fo:page-sequence>
        <fo:flow>
          <xslt:apply-templates /> <!-- process the rest of the doc-->
        </fo:flow>
      </fo:page-sequence>
    </fo:root>
  </xslt:template>

  <xslt:template match="test">
    <fo:block>
      <xslt:value-of select="." />
    </fo:block>
  </xslt:template>

</xslt:stylesheet>

Вы можете найти много вопросов на FAQ Дэйва Поусона по XSL .

...