在我的工作中,iv有一個小錯誤。只需要強調一個小文本部分。 但當我試圖添加標籤時出現錯誤。 它給我的錯誤報告,它不是一個有效的孩子。無法將<fo:inline>元素添加到我的xsl中
的錯誤如下:
Caused by: javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: "fo:inline" is not a valid child of "fo:flow"! (See fo:flow, "Mademoiselle ADS S, 1, 10000 TRO...")
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2304)
at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:682)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:393)
at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:247)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:682)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:682)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:682)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2202)
at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1276)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:673)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1192)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1170)
at com.albiran.ebiza.utilitaires.PDFGenerator.produceXMLData(PDFGenerator.java:117)
at com.satec.pdf.SAPDFGenerator.generatePDF(SAPDFGenerator.java:163)
at com.albiran.ebiza.envoi.AsyncAttachment.getPath(AsyncAttachment.java:41)
... 3 more
而且XSL文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:import href="SAPdfUtils.xsl" />
<xsl:output method="xml" encoding="ISO-8859-1" />
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<!-- ******************************** Déclaration, des pages ************************** -->
<fo:layout-master-set>
<fo:simple-page-master master-name="mainpage"
page-width="21cm" page-height="29.7cm" margin-top="1cm"
margin-bottom="1cm" margin-left="1cm" margin-right="1cm">
<fo:region-body region-name="xsl-region-body"
extent="0cm" margin-top="5cm" margin-bottom="2.5cm" margin-left="2cm"
margin-right="2cm" />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="mainpage"
font-family="Arial">
<!-- ******************************** Body ************************** -->
<fo:flow flow-name="xsl-region-body" font-size="12pt"
font-family="Arial" text-align="justify">
<!-- Page 1 -->
<xsl:call-template name="break" />
<xsl:call-template name="page1" />
<fo:block break-after="page" />
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template name="page1">
<fo:table table-layout="fixed">
<fo:table-column column-width="60%" />
<fo:table-column column-width="40%" />
<fo:table-body>
<fo:table-row text-align="left" font-weight="bold">
<xsl:call-template name="cellBreak" />
<fo:table-cell>
<fo:block>
<xsl:value-of select="/document/contractor/nameLong" />
</fo:block>
<xsl:call-template name="break" />
<fo:block>
<xsl:value-of select="/document/contractor/road" />
</fo:block>
<xsl:call-template name="break" />
<fo:block>
<xsl:value-of select="/document/contractor/city" />
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<fo:block text-align="right">
Paris, le
<xsl:value-of select="/document/date" />
</fo:block>
<xsl:call-template name="break" />
<fo:block font-weight="bold">
Votre référence client : N°
<xsl:value-of select="/document/contractor/id" />
</fo:block>
<fo:block font-weight="bold">
N° de contrat :
<xsl:value-of select="/document/policy/id" />
</fo:block>
<fo:block font-weight="bold">
Intitulé du produit :
<xsl:value-of select="/document/policy/productName" />
</fo:block>
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<fo:inline text-decoration="underline">
Objet : Remise en vigueur de votre contrat d’assurance.
</fo:inline>
<fo:block padding="-10px">
<fo:leader leader-length="90%" leader-pattern="rule"
rule-style="solid" rule-thickness="0.1mm" color="black" />
</fo:block>
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<fo:block>
<xsl:value-of select="/document/contractor/longTitle" />
<xsl:text>,</xsl:text>
</fo:block>
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<fo:block>
Suite à votre règlement du
<xsl:value-of select="/document/dateOfThePayment" />
de votre prime de
<xsl:value-of select="/document/unpaidAmount" />
<xsl:call-template name="space" />
<xsl:text>€</xsl:text>
<xsl:call-template name="space" />
pour la période du
<xsl:value-of select="/document/startDate" />
au
<xsl:value-of select="/document/endDate" />
, nous vous confirmons la remise en vigueur votre contrat d’assurance en date d’effet du
<xsl:value-of select="/document/reinstatementDate" />
.
</fo:block>
<xsl:call-template name="break" />
<fo:block>
Nous restons à votre disposition.
</fo:block>
<xsl:call-template name="break" />
<fo:block>
Nous vous prions de croire,
<xsl:value-of select="/document/contractor/longTitle" />
<xsl:text>, en l'expression de nos sentiments dévoués.</xsl:text>
</fo:block>
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<fo:table table-layout="fixed">
<fo:table-column column-width="60%" />
<fo:table-column column-width="40%" />
<fo:table-body>
<fo:table-row>
<xsl:call-template name="cellBreak" />
<fo:table-cell>
<fo:block>
Votre Conseiller SATEC
</fo:block>
<xsl:call-template name="break" />
<fo:block>
Tél. :
<xsl:value-of select="/document/satecPhone" />
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:template>
<xsl:template name="cellBreak">
<fo:table-cell>
<xsl:call-template name="break" />
</fo:table-cell>
</xsl:template>
<xsl:template name="tableLineBreak">
<fo:table-row>
<xsl:call-template name="cellBreak" />
</fo:table-row>
</xsl:template>
</xsl:stylesheet>
我真的沒有使用XSL文件可悲的是太多的經驗。並且iv看到人們有這個問題,但是由於不同的原因。
非常感謝您提前和抱歉,如果我缺少一些簡單或微不足道的東西,我只是不確定這裏有什麼問題。
我本來以爲已經fo:table或fo:block不應該是fo:flow的孩子。我通常將所有內容都封裝在fo:block中的fo:block:container/fo:block中,但這可能是一種煩躁,直到你看起來像以前一樣。 –
除非我誤讀了某些內容,否則我們在您的XSL中看不到任何名爲「break」的模板,但您始終可以調用它。 –
咋....我發現了這個問題。我想要下劃線的文字下的fo:block是現在的問題。這是正確的,我是盲目的。但是,謝謝你的有用信息。這也幫助了很多。 :D –