Rexx-xml
Rexx-XML
XMLは、オペレーティングシステムや開発言語に関係なく、プログラマが他のアプリケーションで読み取れるアプリケーションを開発できるようにする、移植可能なオープンソース言語です。 これは、アプリケーション間でデータを交換するために使用される最も一般的な言語の1つです。
XMLとは何ですか?
拡張マークアップ言語XMLは、HTMLやSGMLによく似たマークアップ言語です。 これは、World Wide Web Consortiumによって推奨されており、オープンスタンダードとして利用できます。 XMLは、SQLベースのバックボーンを必要とせずに、少量から中量のデータを追跡するのに非常に役立ちます。
すべてのXMLコード例について、次の単純なXMLファイル movies.xml を使用して、XMLファイルを作成し、その後ファイルを読み取ります。
<collection shelf = "New Arrivals">
<movie title = "Enemy Behind">
<type>War, Thriller</type>
<format>DVD</format>
<year>2003</year>
<rating>PG</rating>
<stars>10</stars>
<description>Talk about a US-Japan war</description>
</movie>
<movie title = "Transformers">
<type>Anime, Science Fiction</type>
<format>DVD</format>
<year>1989</year>
<rating>R</rating>
<stars>8</stars>
<description>A schientific fiction</description>
</movie>
<movie title = "Trigun">
<type>Anime, Action</type>
<format>DVD</format>
<year>1986</year>
<rating>PG</rating>
<stars>10</stars>
<description>Vash the Stam pede!</description>
</movie>
<movie title = "Ishtar">
<type>Comedy</type>
<format>VHS</format>
<year>1987</year>
<rating>PG</rating>
<stars>2</stars>
<description>Viewable boredom </description>
</movie>
</collection>
入門
デフォルトでは、xml機能はRexxインタープリターに含まれていません。 RexxでXMLを使用するには、次の手順に従う必要があります。
- 次のファイルをダウンロードします−
- Rexxxml-http://www.interlog.com/ptjm/[www.interlog.com/ptjm/]
- Libxml2-http://ctindustries.net/libxml/[www.ctindustries.net/libxml/]
- iconv-1.9.2.win32-http://xmlsoft.org/sources/win32/oldreleases/[www.xmlsoft.org/sources/win32/oldreleases/]
- libxslt-1.1.26.win32-http://xmlsoft.org/sources/win32/oldreleases/[www.xmlsoft.org/sources/win32/oldreleases/]
- すべてのファイルを抽出し、それらがシステムパスに含まれていることを確認します。
XML関数の読み込み
上記のセクションのすべてのファイルがダウンロードされ、正常に登録されたら、次のステップは、Rexx XML関数をロードするコードを記述することです。 これは、次のコードで実行されます。
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
上記のプログラムについては、次のことに注意することができます-
- 関数 rxfuncadd は、外部ライブラリをロードするために使用されます。 xmlloadfuncs 関数は、 rexxxml ファイル内のすべてのライブラリをメモリにロードするために使用されます。
- rcc <> 0の値の場合、エラーになります。 このために、 rxfuncerrmsg を呼び出して、エラーメッセージの詳細を提供できます。
- 最後に xmlloadfuncs を呼び出して、Rexxプログラムですべてのxml関連機能を有効にできるようにします。
RexxでXMLに使用できるさまざまな*メソッドを見てみましょう。
xmlVersion
このメソッドは、システムで使用されているXMLおよびXSLTライブラリのバージョンを返します。
構文
xmlVersion()
パラメーター
None
戻り値
このメソッドは、システムで使用されているXMLおよびXSLTライブラリのバージョンを返します。
例
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
上記のプログラムを実行すると、次の結果が得られます。 これも、システムで使用されているXMLライブラリのバージョンに依存します。
出力
1.0.0 20631 10126
xmlParseXML
この関数は、関数に送信されたXMLデータを解析するために使用されます。 ドキュメントツリーは、関数によって返されます。
構文
xmlParseXML(filename)
パラメーター
- ファイル名-これは解析する必要があるXMLファイルの名前です。
戻り値
ドキュメントツリーは、関数によって返されます。 エラーがある場合、Elseは0を返します。
例
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
sw = xmlParseXML('test.xml')
出力
一般的な出力はありません。
xmlFindNode
このメソッドは、渡された* XPath式*を評価します。 これは、ドキュメントツリーを解析して、 nodeset を生成し、さらに処理できるようにするために使用されます。
構文
xmlParseXML(XPath,document)
パラメーター
- XPath -これは、xmlファイル内のノードのパスです。
- document -このXMLドキュメント
戻り値
XPath式を評価し、後で使用できるノードセットとして結果を返します。
例
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
document = xmlParseXML('test.xml')
nodeset = xmlFindNode('//movie', document)
say xmlNodesetCount(nodeset)
上記のプログラムを実行すると、次の結果が得られます。
出力
4
出力は、xmlリスト内のムービーノードの数を示しています
xmlEvalExpression
以下のメソッドは、XPath式を評価し、結果として文字列を返すために使用されます。
構文
xmlParseXML(XPath,Node)
パラメーター
- XPath -これは、xmlファイル内のノードのパスです。
- document -特定のノード要素。
戻り値
送信されたXPath式に基づいて文字列が返されます。
例
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
document = xmlParseXML('test.xml')
nodeset = xmlFindNode('//movie', document)
do j = 1 to xmlNodesetCount(nodeset)
value = xmlEvalExpression('type', xmlNodesetItem(nodeset, j))
say value
end
上記のプログラムを実行すると、次の結果が得られます。
出力
War, Thriller
Anime, Science Fiction
Anime, Action
Comedy