| 
 | 
| 
 
использование разных макетов страниц в одном документе 
 | 
|||
|---|---|---|---|
| 
 #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&gotonew=1&tid=1332089]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    56ms | 
get topic data:  | 
    10ms | 
get first new msg:  | 
    8ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    43ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 231ms | 
| total: | 383ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.