|
использование разных макетов страниц в одном документе
|
|||
---|---|---|---|
#18+
Форумчане, есть такая ситуация. Вот XML <?xml version="1.0" encoding="UTF-8"?> <documents> <!-- Счет-фактура --> <Commercial_Invoice clnt_id="362651"> 1 </Commercial_Invoice> <!-- Счет-фактура --> <Commercial_Invoice clnt_id="1644763"> 2 </Commercial_Invoice> <!-- Корректировочный счет-фактура --> <Adj_Commercial_Invoice clnt_id="1195947"> 3 </Adj_Commercial_Invoice> <Bill clnt_id="737659"> 4 <Commercial_Invoice clnt_id="362651"> 4.1 </Commercial_Invoice> </Bill> <Bill clnt_id="395064"> 5 </Bill> <payment_request> 6 </payment_request> <Commercial_Invoice clnt_id="1644763"> 7 </Commercial_Invoice> </documents> По аналогии с предыдущим примером написал xslt <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform" xmlns:fo=" http://www.w3.org/1999/XSL/Format"> <xsl:template match="documents"> <fo:root > <fo:layout-master-set> <fo:simple-page-master master-name="A4_landscape" page-height="21cm" page-width="29.7cm" font-family="sans-serif" margin-top="0.5cm" margin-bottom="1cm" margin-left="2cm" margin-right="2cm"> <fo:region-body margin-top="0mm" margin-bottom="10mm" /> <fo:region-before extent="10mm" /> <fo:region-after extent="10mm" /> </fo:simple-page-master> <fo:simple-page-master master-name="A4_portrait" page-height="29.7cm" page-width="21cm" font-family="sans-serif" margin-top="0.5cm" margin-bottom="1cm" margin-left="2cm" margin-right="2cm"> <fo:region-body margin-top="0mm" margin-bottom="10mm" /> <fo:region-before extent="10mm" /> <fo:region-after extent="10mm" /> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="A4_landscape"> <fo:flow flow-name="xsl-region-body" font-family="Arial"> <xsl:apply-templates select="*" mode="doc"></xsl:apply-templates> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> <xsl:template match="Commercial_Invoice[parent::Bill]" mode="doc"> <fo:page-sequence master-reference="A4_portrait"> <fo:flow flow-name="xsl-region-body" font-family="Arial"> <fo:block><xsl:apply-templates select="."/></fo:block> </fo:flow> </fo:page-sequence> </xsl:template> </xsl:stylesheet> При обработке происходит ошибка вызова одного page-sequence из под другого: net.sf.saxon.trans.XPathException: org.apache.fop.fo.ValidationException: "{ http://www.w3.org/1999/XSL/Format}page-sequence" is not a valid child of "fo:flow"! (See position 27:-1) Как же правильно вызвать использование одного макета страниц для элемента, который находится внутри другого, на который назначен другой макет страницы? Понимаю, что логика такая: Перед использованием нового макета страницы, старый должен быть закрыт. Предположим <documents> обрабатывается макетом «A4_landscape». Внутри <documents> используется элемент <Commercial_Invoice[parent::Bill]> который должен выводиться макетом «A4_portrait». Необходимо часть содержимого <documents> до <Commercial_Invoice[parent::Bill]> вывести с макетом «A4_landscape», закрыть последовательность «A4_landscape», затем вывести содержимое <Commercial_Invoice[parent::Bill]> с макетом «A4_portrait», закрыть – «A4_portrait», вывести оставшуюся часть <documents> с макетом «A4_landscape». Как это описать к коде xslt ? Заранее благодарен за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2016, 12:24 |
|
использование разных макетов страниц в одном документе
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2016, 18:20 |
|
|
start [/forum/topic.php?fid=14&fpage=7&tid=1332089]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 249ms |
total: | 403ms |
0 / 0 |