6.15.1機能説明
RDB,CSV,XML,アプリケーションデータなどのデータマスタをページレイアウトから参照可能にします。データマスタは複数指定することができます。この場合、データソースマスタは指定された複数のデータマスタのデータを行単位にまとめます。
6.15.2属性説明
1bs:datasource-master属性説明
master-nameは他のマスタから参照されるキーとなります。ユニークな名称で設定してください。
属性名 | 指定 | 説明 | 型 | 指定内容 | 初期値 |
master-name | 必須 | 定義名 | CDATA | | - |
position | 任意 | データの読み込み方法 | (Choice) | first:常に先頭から / inherit:続きから | inherit |
2bs:query-master-reference属性説明
master-nameは他のマスタから参照されるキーとなります。ユニークな名称で設定してください。
属性名 | 指定 | 説明 | 型 | 指定内容 | 初期値 |
master-reference | 必須 | 関連付けを行います。 <bs:query-master>のname属性への参照名 | CDATA | | - |
3bs:csv-master-reference属性説明
master-nameは他のマスタから参照されるキーとなります。ユニークな名称で設定してください。
属性名 | 指定 | 説明 | 型 | 指定内容 | 初期値
|
master-name | 必須 | 関連付けを行います。 <bs:csv-master>のname属性への参照名 | CDATA | | - |
4bs:application-data-master-reference属性説明
master-nameは他のマスタから参照されるキーとなります。ユニークな名称で設定してください。
属性名 | 指定 | 説明 | 型 | 指定内容 | 初期値 |
master-name | 必須 | 関連付けを行います。 <bs:application-data-master>のname属性への参照名 | CDATA | | - |
5bs:xml-master-reference属性説明
master-nameは他のマスタから参照されるキーとなります。ユニークな名称で設定してください。
属性名 | 指定 | 説明 | 型 | 指定内容 | 初期値 |
master-name | 必須 | 参照するXMLマスタ定義 | xsd:IDREF | <bs:xmlmaster>のname | - |
6.15.3記述例
bs:datasource-masterサンプル1
複数のデータマスタをまとめ、1つのデータソースとして扱うサンプルです。
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML file created by biz-Stream Designer -->
<!-- biz-Stream Copyright BrainSellers.com Corp. -->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:pdf="http://www.brainsellers.com/schema" xmlns:svg="http://www.brainsellers.com/schema" xmlns:bs="http://www.brainsellers.com/schema" xmlns:form="http://www.brainsellers.com/schema" version="5.0.0">
<bs:datasource-master-set>
<bs:datasource-master master-name="DataSource" position="inherit">
<bs:query-master-reference master-reference="SQL-DB2"/>
<bs:query-master-reference master-reference="SQL-Oracle"/>
</bs:datasource-master>
<bs:database-resource-master master-name="RDB-DB2" driver="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://brain_db:50000/SAMPLE" userid="administrator" password="ZGIyYWRtaW4= "/>
<bs:database-resource-master master-name="RDB-Oracle" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@brain_db:1521:XE" userid="scott" password="dGlnZXI="/>
<bs:query-master master-name="SQL-DB2">
<bs:query-statement master-reference="RDB-DB2">select STAFF.ID,STAFF.NAME from STAFF where (STAFF.ID < 100) </bs:query-statement>
<bs:data-type column-name="ID" type="char"/>
<bs:data-type column-name="NAME" type="varchar"/>
<!-- TableName = STAFF AliasTableName = STAFF FieldName = ID TOTAL = SORT = ExtractionCnditions = orStr = < 100 type = char
TableName = STAFF AliasTableName = STAFF FieldName = NAME TOTAL = SORT = ExtractionCnditions = orStr = type = varchar
-->
</bs:query-master>
<bs:query-master master-name="SQL-Oracle">
<bs:query-statement master-reference="RDB-Oracle">select EMP.EMPNO,EMP.ENAME from EMP where (EMP.EMPNO >= 7800) </bs:query-statement>
<bs:data-type column-name="EMPNO" type="integer"/>
<bs:data-type column-name="ENAME" type="varchar"/>
<!-- TableName = EMP AliasTableName = EMP FieldName = EMPNO TOTAL = SORT = ExtractionCnditions = orStr = >= 7800 type = decimal
TableName = EMP AliasTableName = EMP FieldName = ENAME TOTAL = SORT = ExtractionCnditions = orStr = type = varchar
-->
</bs:query-master>
</bs:datasource-master-set>
<fo:layout-master-set>
<fo:simple-page-master master-name="A4" page-height="297mm" page-width="210mm">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4" bs:local-page-control="none">
<fo:flow flow-name="xsl-region-body">
<bs:block-container>
<bs:include href="${base-dir}/sample/xml/datasource-master/datasource-masterSample1-page.xml"/>
</bs:block-container>
</fo:flow>
</fo:page-sequence>
</fo:root>
DB2とOracleのデータマスタをまとめて1つのデータソースとして扱えます。
データ件数が異なる場合、データ件数が少ないデータマスタのカラムは空白で表示されます。
bs:datasource-masterサンプル2
<bs:datasource-master>のposition属性の違いについて説明します。
position属性にはfirstとinheritの2つ値があります。
firstはデータソースからデータを取得するとき、常に先頭から取得できます。
ただし、自動改ページ機能は機能しません。
ヘッダー行のように全ての画面で同じ内容を表示するようなケースに有効です。
inheritはデータソースの現在のレコード位置から取得できます。
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML file created by biz-Stream Designer -->
<!-- biz-Stream Copyright BrainSellers.com Corp. -->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:pdf="http://www.brainsellers.com/schema" xmlns:svg="http://www.brainsellers.com/schema" xmlns:bs="http://www.brainsellers.com/schema" xmlns:form="http://www.brainsellers.com/schema" version="5.0.0">
<bs:datasource-master-set>
<bs:datasource-master master-name="STAFF-DATA" position="inherit">
<bs:query-master-reference master-reference="STAFF"/>
</bs:datasource-master>
<bs:query-master master-name="STAFF">
<bs:query-statement master-reference="DB2">select STAFF.NAME,STAFF.YEARS,STAFF.SALARY from STAFF where (STAFF.YEARS = 7) </bs:query-statement>
<bs:data-type column-name="NAME" type="varchar"/>
<bs:data-type column-name="YEARS" type="integer"/>
<bs:data-type column-name="SALARY" type="decimal"/>
<!-- TableName = STAFF AliasTableName = STAFF FieldName = NAME TOTAL = SORT = ExtractionCnditions = orStr = type = varchar
TableName = STAFF AliasTableName = STAFF FieldName = YEARS TOTAL = SORT = ExtractionCnditions = null orStr = null type = char
TableName = STAFF AliasTableName = STAFF FieldName = SALARY TOTAL = SORT = ExtractionCnditions = orStr = type = decimal
-->
</bs:query-master>
<bs:database-resource-master master-name="DB2" driver="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://brain_db:50000/SAMPLE" userid="administrator" password="ZGIyYWRtaW4="/>
</bs:datasource-master-set>
<fo:layout-master-set>
<fo:simple-page-master master-name="A4H" page-height="210mm" page-width="297mm">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4H" bs:local-page-control="none">
<fo:flow flow-name="xsl-region-body">
<bs:block-container>
<bs:include href="${base-dir}/sample/xml/datasource-master/datasource-masterSample2-page.xml"/>
</bs:block-container>
</fo:flow>
</fo:page-sequence>
</fo:root>
3つの表に同じデータソースを関連付けしています。
1番左の表は先頭から5件を使用して表を表示しています。
左から2番目の表では、続きの6件目から使用しています。
1番右の表はすでにデータがないので表示されません。
bs:datasource-masterサンプル3
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML file created by biz-Stream Designer -->
<!-- biz-Stream Copyright BrainSellers.com Corp. -->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:pdf="http://www.brainsellers.com/schema" xmlns:svg="http://www.brainsellers.com/schema" xmlns:bs="http://www.brainsellers.com/schema" xmlns:form="http://www.brainsellers.com/schema" version="5.0.0">
<bs:datasource-master-set>
<bs:datasource-master master-name="STAFF-DATA" position="first">
<bs:query-master-reference master-reference="STAFF"/>
</bs:datasource-master>
<bs:query-master master-name="STAFF">
<bs:query-statement master-reference="DB2">select STAFF.NAME,STAFF.YEARS,STAFF.SALARY from STAFF where (STAFF.YEARS = 7) </bs:query-statement>
<bs:data-type column-name="NAME" type="varchar"/>
<bs:data-type column-name="YEARS" type="integer"/>
<bs:data-type column-name="SALARY" type="decimal"/>
<!-- TableName = STAFF AliasTableName = STAFF FieldName = NAME TOTAL = SORT = ExtractionCnditions = orStr = type = varchar
TableName = STAFF AliasTableName = STAFF FieldName = YEARS TOTAL = SORT = ExtractionCnditions = null orStr = null type = char
TableName = STAFF AliasTableName = STAFF FieldName = SALARY TOTAL = SORT = ExtractionCnditions = orStr = type = decimal
-->
</bs:query-master>
<bs:database-resource-master master-name="DB2" driver="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://brain_db:50000/SAMPLE" userid="Administrator" password="ZGIyYWRtaW4="/>
</bs:datasource-master-set>
<fo:layout-master-set>
<fo:simple-page-master master-name="A4H" page-height="210mm" page-width="297mm">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4H" name="bizsheet" bs:local-page-control="none">
<fo:flow flow-name="xsl-region-body">
<bs:block-container>
<bs:include href="${base-dir}sample\xml\datasource-master\datasource-masterSample3-page.xml"/>
</bs:block-container>
</fo:flow>
</fo:page-sequence>
</fo:root>
3つの表に同じデータソースを関連付けしています。
常に先頭からデータを取得するため全ての表が同じに表示されています。
ヘッダー行のように全ての画面で同じ内容を表示するようなケースに有効です。