「変換(XML→抽出データ)」手順は、外部XMLデータ(xoBlos 以外の他システムからのXMLデータ)を、xoBlos 用XMLデータに変換する手順です。
[新しい手順] メニューからは、[抽出データを作成する]-[XMLファイルから] で作成される手順です。
「変換(XML→抽出データ)」手順は、外部XMLデータを xoBlos 用XMLに、構造のフラット化を行い、文字コード(エンコーディング)の変換もやってくれる便利なツールですが、留意事項がありますので解説します。
XMLデータの冒頭に、DTD(Document Type Definition)の宣言がある場合があります。
例えば次の例では XHTML ファイルのサンプルですが、2行目にDTD宣言があります。
input.xhtml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>XHTML sample</title> </head> <body> <p>XHTML のサンプルファイルです。</p> </body> </html>
このようなファイルを入力ファイルにした場合、「変換(XML→抽出データ)」手順では実行時にエラーになります(製品仕様)。
このため、事前にWindowsの findstr コマンドなどを使用し、DTD宣言行を抜き取っておいてから入力します。
findstr コマンドの例
findstr /V "\/\/DTD" input.xhtml > work.xml
findstr コマンドは、ファイルから指定した文字列を検索してくれますが、/V オプションを付けると、一致しない行のみを出力します。
リダイレクト出力した work.xml ではDTD宣言行がとれ、このファイルを入力ファイルとして「変換(XML→抽出データ)」手順にかけると、出力したファイルはxoBlos XML形式になります。
XOB.xml
<?xml version="1.0" encoding="utf-8"?> <Root> <ROWS> <html /> <head /> <title>XHTML sample</title> </ROWS> <ROWS> <html /> <body /> <p>XHTML のサンプルファイルです。</p> </ROWS> </Root>
xoBlos 業務定義手順への findstr コマンド の組み込みは、下記の記事を参考にしてください(/V オプションをお忘れなく)。
Designer:「外部アプリの実行」の定番設定方法 https://xoblos.hatenablog.jp/entry/2021/12/26/142128