91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

XML Publisher 技巧

發布時間:2020-08-07 08:31:18 來源:ITPUB博客 閱讀:223 作者:test_100 欄目:關系型數據庫

更多

個人分類: Form 開發

           

可以采取兩種方式編寫布局語言,一是 XSL 語句,二是 XMLP 簡易語句,個人建議使用前者,因為其是國際通行標準。另外,這兩種語法可以混合使用,比如上面的條件格式化行和單元格。
RTF 中直接寫的只能是 XMLP 簡易語句;在窗體域中則上述兩者皆可。
標準的頁眉頁腳中不允許使用窗體域;但擴展的頁眉頁腳中可以使用。

如果模板中要求多個頁眉頁腳,使用下面的標記來標示出報表的主體部分    

<? start:body ?>

……

<?end body?>

  • 嵌套模板

          由于在頁眉和頁腳中不允許使用窗體域,而當報表頁眉頁腳中希望插入 XML 數據的時候,可以考慮使用嵌套模板。

          嵌套模板是在模板中定義一個子模板,然后在需要的地方調用它,如在頁眉頁腳中調用它。

          1. 定義子模板

            子模板標記之間可以使用任何的標記和內容,和模板的主體部分沒有任何區別

            <? template:internal template name?>

                 ……

            <?end template?>

           2. 調用子模板

              下面兩條語句都可以:

               <?call:internal template name?>

               <? call-template:internal template name?>

  • XML中計算除法用div

            例如: <?pick_qty div req_qty?>

  • XML Publisher 支持 Word 中的分欄功能,使報表輸出能夠以多欄的方式打印。

              如下是地址簿的多欄打印效果

               XML Publisher 技巧

  • 分頁(按組分頁)

分頁是自然的,但如果想在某處強制分頁如新組新頁,那么可以使用 Word 的分頁符( CTRL+ENTER 快捷鍵),但會導致最后出現空白頁。

可以使用如下幾種方式:

1 、分組聲明中加 @ section <? for-each@section:Group_Name ?>

2 <?end for-each?> ( 不同的 E 中哦 ) <? split-by-page-break:?> 這個翻譯后,實際上是:

       

        < xsl:if test="position()<last()">

        < xsl:attribute name="break-before">page</ xsl:attribute >

        </ xsl:if >

3 <?end for-each?> 前加 < xsl:attribute name="break-after">page</ xsl:attribute >

    此法下 RTF 最后無空白頁,但 PDF 有空白頁;

4 <? end for-each?> 前加 < xsl:attribute name="break-before">page</ xsl:attribute >

    此法下 RTF PDF 最后都有空白頁。

  • 分頁(條件分頁)

        任意條件分頁,需要借助 IF + 上面的 break-after 或者 break-before 如:

        <? if:CURRENCY_CODE ="CNY"?>

        < xsl:attribute name="break-before">page</ xsl:attribute >

        <?end if ?>

        : 要在 每行 <? end foreach ?> 前哦 ; if 和分頁代碼要寫在同一個 E .

  • 分頁( 固定行分頁 )

        固定行分頁,需要借助 IF + 上面的 break-after 或者 break-before 在行 <? end foreach ?> 前,如下語句控制每頁 5 行:

        <? if:position () mod 5 =0?>

        < xsl:attribute name="break-before">page</ xsl:attribute >

        <?end if?>

       在測試過程中發現問題,第一句改為下面這句:

       <? if: position() != 1 and position() mod 5 = 1?>

  • 強制頁碼從某一個數值起始

<?initial-page-number:pagenumber?>: 參數pagenumber(1.可以是固定的值 2.可以XML傳過來的值)

或<?initial-page-number:$pagenumber?>:其中pagenumber為在RTF中自定義的變量.

  • RTF中自定義變量

    • < ?param@begin:parameter_name;parameter_value ?>,引用的話前面要加$

  • IF 語句

The program was <? if:SUCCESS =’N’?>not<?end if?> successful

The program was

not

successful.

The program was <? if@inlines:SUCCESS =’N’?>not<?end if?> successful

The program was not successful.

使用@ inlines 使文本在同一行顯示

If-Then-Else 語句

<?xdofx:if element_condition then result1 else result2 end if?>

<? xdofx:If AMOUNT > 1000 Then

                 'Higher‘

             Else If AMOUNT < 1000 then

                 'Lower‘

             Else

                 'Equal‘

             End If?>

條件格式化— Choose 語句

<?choose:?>

<? when:expression ?>

……

<? when:expression ?>

……

<?otherwise?>

……

<?end choose?>

  • 根據條件顯示或隱藏行


YEAR MONTH  SALES
foreach   if year month sales endif    endforeach

        其中: foreach                          <?for-each:SALE?>

                  if                                     <?if:SALES>5000?>

                 endif                               <?end if?>

                 endforeach                     <?end for-each?>

  • 根據條件格式化行(加亮,背景等)

<? if@row:condition ?>

< xsl:attribute name="background-color" xdofo:ctx =" incontext "> lightgray </ xsl:attribute >

<?end if?>

如果不加@ row, 則僅局限于單元格


YEAR MONTH  SALES
foreach   format year month sales  endforeach

其中: foreach                    <?for-each:SALE?>

         format                       < ?if@row:position () mod 2=0?>
                                           <xsl:attribute name="background-color" xdofo:ctx="incontext">lightgray</xsl:attribute>

                                           <?end if?>

        endforeach               <?end for-each?>

RGB顏色的寫法:

< ?if@row:REF_NO3="After Sub Total:"?>< ?attribute@incontext:background-color;'RGB(255,0,0)'?><?end if?> --背景顏色

< ?if@row:REF_NO3="Before Sub Total:"?>< ?attribute@incontext:color;'#114515'?><?end if?>------字體顏色

<?if:2>1?><fo:block font-size='20pt'><?end if?><?REF_NO2?>  控制字體大小

根據條件顯示或隱藏列

            <? if@column:condition ?>

……

<?end if?>


<? if@column:condition ?>

  <?quantity?>

<?end if?>

例如:

<? if@column : TypeName ="PRIVATE"?>

  <?quantity?>

<?end if?>

  • 條件格式化—單元格加亮

我的理解加亮單元格也就是加一個背景,這里的 block 和前面說的 incontext 作用范圍有所區別。在 if 后不加@ row 都是指 cell, 加@ row incontext 作用于 row,block 作用于 column。

<? if:debit >1000?>

  < xsl:attribute xdofo:ctx ="block" name="background-color">

  red

  </ xsl:attribute >

<?end if?>

例:


account debit credit
F    account CH1 debit CH2 credit   E

其中: F                              <?for-each:account?>

         CH1                          <?if:debit>1000?>

                                               <xsl:attribute xdofo:ctx="block" name="backgroundcolor">red</xsl:attribute>

                                           <?end if?>

        CH2                           <?if:credit>1000?>

                                              <xsl:attribute xdofo:ctx="block" name=background-color">red</xsl:attribute>

                                           <?end if?> 

        E                                 <?end for-each?>

  • 連續向下累積合計效果

要實現以下效果:


id amt total
1 100 100
2 200 300
3 300 600

構造如下:

set_var


id amt total
F   id amt total   E

其中: set_var             <? xdoxslt:set_variable ($_XDOCTX, ’ Var ’, 0)?>      --定義變量

          F                          <?for-each:id?>

          total                    <? xdoxslt:set_variable ($_XDOCTX, ’ Var ’, xdoxslt:get_variable ($_XDOCTX,’ Var ’) + amt)?>        --累加第行值

                                     <? xdoxslt:get_variable ($_XDOCTX, ’ Var ’)?>                   --通過變量顯示累加值

          E                          <?end for-each?>

  • 條件加總

<?sum(current-group)[sourcename!='']/receipt_amt?>

變量知識 :

變量使用“ set/get” 的方式來分配、更新和取得變量的值

<?xdoxslt:set_variable($_XDOCTX, ’variable name’, value)?>

<?xdoxslt:get_variable($_XDOCTX, ’variable name’)?>

<?xdoxslt:set_variable($_XDOCTX, ’x’, xdoxslt:get_variable($_XDOCTX, ’x’ + 1)?>

<xsl:variable name="start" xdofo:ctx="incontext" select="position()"/>
< xsl:value-of select="$start"/>

  • 排序

<?sort:element name?>

<?sort:SAL;'ascending';data-type='text'?>

升序/降序:ascending / descending

數據類型:text / number / date

注意以上字符串的大小寫,這里的語法對大小寫是敏感的。

可以有多個排序字段; 寫在for-each和end for-each之間的同一個E中或不同的E中.

<?for-each:G_VENDOR_NAME?><?sort:VENDOR_NAME?><?sort:INVOICE_NUM?><?end for-each?>

  • 數字和日期格式化

數字格式化

XML Publisher 支持兩種數字格式化方式:

Word 本身的數字格式掩碼

Oracle format-number 功能

<?format-number:fieldname;’999G999D99’?>

日期格式化

XML Publisher 支持三種日期格式化方式

Word 本身的日期格式掩碼

Oracle format-date 功能

<? format-date:date_string ; ’FORMAT_MASK’;?>

<? format-date:hiredate ;’YYYY-MM-DD’?>

Oracle 的抽象日期格式掩碼語法

<? format-date:fieldname ;’MASK’?>

<? format-date:hiredate ;’SHORT’?>

<? format-date:hiredate ;’LONG_TIME_TZ’?>

抽象日期格式掩碼列表


掩碼

US 輸出實例

SHORT

2/31/99

MEDIUM

Dec 31, 1999

LONG

Friday, December 31, 1999

SHORT_TIME

12/31/99 6:15 PM

MEDIUM_TIME

Dec 31, 1999 6:15 PM

LONG_TIME

Friday, December 31, 1999 6:15 PM

SHORT_TIME_TZ

12/31/99 6:15 PM GMT

MEDIUM_TIME_TZ

Dec 31, 1999 6:15 PM GMT

LONG_TIME_TZ

Friday, December 31, 1999 6:15 PM GMT

  • 矩陣報表(也可guide中搜索:split-column-data)

XML數據:

<ROWSET>
< RESULTS>
< INDUSTRY>Motor Vehicle Dealers</INDUSTRY>
< YEAR>2005</YEAR>
< QUARTER>Q1</QUARTER>
< SALES>1000</SALES>
< /RESULTS>
< RESULTS>
< INDUSTRY>Motor Vehicle Dealers</INDUSTRY>
< YEAR>2005</YEAR>
< QUARTER>Q2</QUARTER>
< SALES>2000</SALES>
< /RESULTS>
< RESULTS>
< INDUSTRY>Motor Vehicle Dealers</INDUSTRY>
< YEAR>2004</YEAR>
< QUARTER>Q1</QUARTER>
< SALES>3000</SALES>
< /RESULTS>
< RESULTS>
< INDUSTRY>Motor Vehicle Dealers</INDUSTRY>
< YEAR>2004</YEAR>
< QUARTER>Q2</QUARTER>
< SALES>3000</SALES>
< /RESULTS>
< RESULTS>
< INDUSTRY>Motor Vehicle Dealers</INDUSTRY>
< YEAR>2003</YEAR>
...
< /RRESULTS>
< RESULTS>
< INDUSTRY>Home Furnishings</INDUSTRY>
...
< /RESULTS>
< RESULTS>
< INDUSTRY>Electronics</INDUSTRY>
...
< /RESULTS>
< RESULTS>
< INDUSTRY>Food and Beverage</INDUSTRY>
...
< /RESULTS>
< /ROWSET>

想要的結果:


INDUSTRY 2005 2004 2003
Motor Vehicle Dealers 3000 6000 1200
Home Furnishings 3200 7770 3300
Electronics 9000 9000 4300
Food and Beverage 1200 900 1600

模板結構:


INDUSTRY   header column for   year   end
for     INDUSTRY for   sum(sales)   end

其中:   header column                          <?horizontal-break-table:1?>

            for:                                                < ?for-each-group@column:RESULTS;YEAR ?>

            YEAR                                           <?YEAR?>

            end                                              <?end for-each-group?>

            for:                                               <?for-each-group:RESULTS;INDUSTRY?>

            INDUSTRY                                <?INDUSTRY?>

            for:                                               < ?for-each-group@cell:currentgroup();YEAR ?>

            sum(Sales)                               <?sum(current-group()//SALES)

            end                                              <?end for-each-group?>

            end                                              <?end for-each-group?>

  • SQL與XML


SQL Statement

Usage

Description

2+3

<?xdofx:2+3?>

2-3

<?xdofx:2-3?>

2*3

<?xdofx:2*3?>

2/3

<?xdofx:2/3?>

2**3

<?xdofx:2**3?>

指數

2||3

<?xdofx:2||3?>

連接

lpad(‘aaa’,10,’.’)

<?xdofx:lpad(‘aaa’,10,’.’)?>

左邊填充

rpad(‘aaa’,10,’.’)

<?xdofx:rpad(‘aaa’,10,’.’)?>

右邊填充

decode(’xx’,’bb’,’cc’,’xx’,’dd’)

<?xdofx:decode(’xx’,’bb’,’cc’,’xx’,’dd’)?>

decode 判斷功能

instr(’abcab’,’a’,2)

<?xdofx:instr(’abcab’,’a’,2)?>

Instr 查找子串位置

substr(’abcdefg’),2,3)

<?xdofx:substr(’abcdefg’),2,3)?>

查找子串

replace(name,’John’,’Jon’)

<?xdofx:replace(name,’John’,’Jon’)?>

替換

to_number(‘12345’)

<?xdofx:to_number(‘12345’)?>

轉換為數字

to_char(12345)

<?xdofx:to_char(12345)?>

轉換為字符

sysdate()

<?xdofx:sysdate()?>

系統當前日期

http://blog.csdn.net/rfb0204421/article/details/7478090

http://www.cnblogs.com/quanweiru/archive/2012/10/19/2730842.html


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东平县| 久治县| 遂川县| 广汉市| 江达县| 安丘市| 宁陵县| 东乌珠穆沁旗| 江油市| 阳谷县| 伊宁市| 揭阳市| 绥芬河市| 砚山县| 陇南市| 同江市| 兴文县| 昂仁县| 右玉县| 霍邱县| 浠水县| 沐川县| 安阳县| 曲阜市| 永州市| 老河口市| 西吉县| 潼南县| 黄冈市| 五指山市| 康定县| 信阳市| 明光市| 沧源| 华蓥市| 繁峙县| 漾濞| 濉溪县| 汉阴县| 汝阳县| 石渠县|