XProcは、パイプライン処理でドキュメントを処理するためのXML変換言語です。変換処理やその他のステップを連鎖的に実行することで、目的の結果を得ることができます。XML 、HTML、JSON、テキスト、バイナリ形式のドキュメントを処理できます 。
現在の(安定版)バージョンは3.1です。[ 1 ] XProc 1.0 [ 2 ]はW3C勧告ですが、XProc 3.1はW3C XProc Nextコミュニティグループによって開発された標準です。[ 3 ]
その主な特徴は以下のとおりです。
以下は(非常に)シンプルなXProcパイプラインです。
<p:declare-step xmlns:p= "http://www.w3.org/ns/xproc" version= "3.0" ><p:input port= "source" /> <p:output port= "result" /><p:add-attribute attribute-name= "timestamp" attribute-value= "{current-dateTime()}" /> <p:delete match= "@data" /></p:declare-step>source。ここに元のドキュメントが流れ込みます。result。ここから結果のドキュメントが出力されます。source自動的にパイプラインの最初のステップに送られます。このステップでは、現在の日時をp:add-attribute含む属性が追加されます。timestampp:deleteと呼ばれるすべての属性を削除するステップに流れますdata。p:delete最終ステップであるため、生成されたドキュメントは出力resultポートから出力されます。このパイプラインに以下のXMLドキュメントを提供するとします。
<example data= "321" > <item data= "123" >何らかのデータ... </item> </example>結果は次のようになります。
<example timestamp= "2024-09-11T15:05:22.82+02:00" > <item>データ... </item> </example>属性に記録される正確な日時については、timestampもちろんパイプラインが実行された日時によって異なります。
XML処理のための何らかのプログラミング言語のアイデアは、20世紀末のXML黎明期から存在していました。しかし、W3CがXML処理モデルワーキンググループと呼ばれるワーキンググループを開始したのは2005年末になってからのことでした。その結果、2010年5月11日付のXProc 1.0の勧告が発表されました。[ 2 ]
動作する XProc 1.0 プロセッサを作成するためのさまざまな試みがありました。現在、完全な 1.0 標準を実装したオープンソース製品として利用可能なのは、XML Calabash [ 4 ]と MorganaXProc [ 5 ]の 2 つだけです。
バージョン1.0のリリース後、XProcワーキンググループは次期バージョンの開発について議論を続けました。バージョン2.0の構想がいくつか提案されましたが、これはXML構文に基づかないものであり、コミュニティからの支持をあまり得られませんでした。ワーキンググループへの参加は次第に減少し、2016年に解散しました。
2017 年 6 月にXProc Next コミュニティ グループ[ 3 ]が設立され、完全に XML ベースの新しいバージョンの開発に着手しました。これは 2.0 イニシアチブとは全く異なるアプローチであったため、バージョン番号は 3.0 に引き上げられました。安定版は 2022 年 9 月 12 日にリリースされました。[ 1 ]
2024年にワーキンググループはマイナーアップデートの作業を開始し、2025年5月29日にXProc 3.1としてリリースされました。これは言語仕様と標準ステップライブラリのいくつかの誤りを修正し、また、以下のステップライブラリを完成した仕様として公開します。[ 6 ]
以下のプロセッサはXProc 3.0以降をサポートしています。
XProc 3.0 は後方互換性がないため、上記の実装では XProc 1.0 をサポートすることは期待できません。[ 11 ]
以下のプロセッサはXProc 1.0規格をサポートしています。
他にもXProc 1.0の実装はいくつか存在したが、それらは不完全であったり、メンテナンスされていなかったりした。
XProcのロゴとマスコットは、フィンランド語でパイプラインを意味する「カナヴァ」という名の魚です。このロゴはベサン・トヴェイ=ウォルシュによってデザインされました。