1. ホーム
  2. Web プログラミング
  3. XML/RSS
  4. XMLの例

Powerbuilderでのxmlアプリケーションの例(pb)

2022-01-04 20:57:59

サンプルファイルは以下の通りです(DTDを掲載する代わりに、簡単な例を挙げて説明します)。

コピーコード コードは以下の通りです。

<trans>
<transdetail>
<order><date/></order>
<orderdetail><product/></orderdetail>
<orderdetail><product/></orderdetail>
</transdetail>
<transdetail>
<order><date/></order>
<orderdetail><product/></orderdetail>
<orderdetail><product/></orderdetail>
</transdetail>
</trans>

私のテーブル構造、そして皆のテーブルはこのようにデザインされるべきだと思います。
order(顧客、日付、その他の情報を含む販売注文)
orderdetail(商品、数量、価格情報などの注文詳細)
この時点で、このxmlのフォーマットが何かおかしいことは、おそらく目の肥えた人には明らかでしょう。
コピーコード コードは以下の通りです。

<trans>
<! --transdetail This section is probably redundant -->
<order>
<date/>
<detail><! -- The detail is part of an order and should not be separated from the order header -->
<orderdetail><product/></orderdetail>
<orderdetail><product/></orderdetail>
</detail>
</order>
<order>
<date/>
<detail>
<orderdetail><product/></orderdetail>
<orderdetail><product/></orderdetail>
</detail>
</order>
</trans>

でも、人はZF部門、変えられないから、ダサくてもやるしかないんです
dw_export.save("c: \test.xml",xml!,false)
2つのデータウィンドウを定義することで、主にそのxmlテンプレートを定義します。
d_order (オーダーヘッダーデータエクスポート、2行目のコード、EITXで設定可能)
1. 新しいデータウィンドウを作成する(ここで注意するのは、どのように条件をつけるかについて、複数行のデータがある場合、SQLでグループ化したほうがよく、そうしないと生成されるデータが重複してしまうということです)。
3. 3. エクスポート/インポートテンプレートxml(以下、EITX)の編集領域で右クリックし、別名で保存します。
4. 4. データエクスポートの使用テンプレートを、先ほど保存したテンプレートの名前に設定する
定義されたテンプレートは次のようになります。
コピーコード コードは以下の通りです。

<?xml version=~"1.0~" encoding=~"gb2312~" standalone=~"no~"? >
<trans>
<transdetail __pbband=~"detail~"><! -- Right-click on the transdetail section in EITX and check "stars detail" [Note 1] -->
<order>
<date>order_date</date>
</order>
dw_detail <! -- Right-click on the transdetail section in EITX and select "add child" under "datawindow control refrence" [Note 2] -->
</transdetail>
</trans>

注意すべき点は2つあります。
[注1]この開始の詳細は、データループを制御するので、チェックする必要がありますが、各xmlは1つだけ定義することができます、ここで質問が発生し、私はヘッダループを注文した場合、どのように再び注文の詳細ループを作るために、結論は、データウィンドウで達成できない、処理のためのデータウィンドウに分割する必要がありますもノート2があります。
[注2]我々は、d_orderのレポートを挿入する必要がある、つまり、d_orderdetail、d_orderのコントロールリスト(datawindowのコントロールの参照と同じ)でdw_detail(デフォルト名はdw_1、私は名前を変更)されています。
d_orderdetail(注文詳細データのエクスポート、これはレポートによって参照されるデータウィンドウであるdw_detail上記、コードの3行目は、EITXに設定することができる)
1. 新規データ作成画面
2. 2. export/import template xml(以下EITX)の編集領域で右クリックし、別名で保存する。
3. 3. データエクスポートの使用テンプレートを、先ほど保存したテンプレートの名前に設定する
<?xml version=~"1.0~" encoding=~"gb2312~" standalone=~"no~"? >
<detail><! --ここでorderdetailと定義しても無駄であり、ネストしても無視されます【注3】 -->
<orderdetail __pbband=~"detail~"><! -- [注4] -->
<product>product_name</product>
</orderdetail>
</detail>
[注3)d_orderでxmlを書き出すと、d_orderdetailのxml宣言とtopノードが無視されることに注意してください
[注4)ここでorderdetailセクションが定義されていますが、これは1つの注文が複数の詳細を持つ可能性があるため、ループとなる開始詳細を設定する必要があるためです。
最終的に生成されたファイルは次のようになります。
コピーコード コードは以下の通りです。

<trans>
<transdetail>
<order><date>20080101</date></order>
<orderdetail><product>A</product></orderdetail>
<orderdetail><product>has</product></orderdetail>
</transdetail>
<transdetail>
<order><date>20080102</date></order>
<orderdetail><product>A</product></orderdetail>
<orderdetail><product>C</product></orderdetail>
</transdetail>
</trans>

注:xmlインターフェースファイルの設計を依頼された場合、ユーザーの利便性を考慮するよう心がけてください