テストスクリプトの一部として、XMLデータをシステムに入力する必要があります。
テストスクリプト自体はシェルスクリプトです。
XMLデータの属性には、現在の時刻に近づく必要があるタイムスタンプが含まれています。 (実際には2つのタイムスタンプがあります。1つは現在の時間の近く、もう1つは将来の数分から数時間です。)残りのデータは静的です(つまり、テストごとに1つの異なるXMLファイルセットがあります)。 )。
外部エンティティを使用してから、スクリプトを介してエンティティ定義を生成してこの問題を解決しようとしています。問題:コンシューマシステムはXMLのサブセットのみをサポートしています(glib XMLパーサによって異なります)。
だから私の次のアイデアは、外部エンティティを解析し、すべてのエンティティに拡張され、コンテンツを含むフラットファイルXMLを出力するパーサーを介してXMLを実行することでした。コマンドラインツール(好ましくはDebian / Ubuntuリポジトリ)として使用できるパーサはありますか?
答え1
xmlstarlet
これはこの問題を解決し、Ubuntuリポジトリ(16.04ベース)で利用可能で、おそらくDebianリポジトリでも利用できます。
構文は次のとおりです。
xmlstarlet c14n foo.xml > bar.xml
bar.xml
foo.xml
すべてのエンティティが確認済みの完全修飾バージョンになります。