XSLT 変換(XSLT Transformation) (変換)
サマリ
ArcGIS アイテムのメタデータ、または XSLT 1.0 スタイルシート使用の XML ファイルを変換し、その結果を XML ファイルに保存するには、.NET 3.5 XML ソフトウェアを使用します。
XSLT スタイルシートを使用して、ArcGIS メタデータまたは XML ファイルに対してさまざまな変更を行うことができます。ArcGIS for Desktop には、いくつかの XSLT スタイルシートが付属しています。XSLT スタイルシートは、<ArcGIS インストール場所>\Metadata\Stylesheets フォルダに格納されています。次の表で、これらのスタイルシートを説明します。
次のスタイルシートは HTML ドキュメントを生成し、[説明] タブのアイテムに関する情報を表示するのに使用されます。アイテムのメタデータからコンテンツを抽出し、それに HTML の書式に関する指示を加えます。これらのスタイルシートは他のファイルから多くの XSLT テンプレートを ArcGIS_Imports フォルダにインポートします。インポートしたテンプレートは業務の大半を行います。カスタム スタイルシートを作成して表示させたい場合は、ArcGIS Metadata Toolkit のドキュメントを参照するとこれらのスタイルシートについて知ることができます。
ArcGIS.xsl | アイテムの完全なメタデータ コンテンツの表示。デフォルトのアイテム説明スタイルを除いて、すべてのメタデータ スタイルから参照されます。 |
ArcGIS_ItemDescription.xsl | アイテムの簡潔な説明のみを表示します。デフォルトのアイテム説明メタデータ スタイルから参照されます。 |
次のスタイルシートは <ArcGIS インストール場所>\Metadata\Stylesheets\gpTools フォルダで提供され、アイテムのメタデータを抽出して処理し、作成された XML ドキュメントを新しい XML ファイルとして保存します。この操作の目的はアイテムのメタデータを ArcGIS 以外で使用する前にフィルタリングすることかもしれません。あるいは、アイテムのメタデータを変更することかもしれません。この場合、生成された XML ファイルは [メタデータ インポータ(Metadata Importer)] ツールを使用して、そのメタデータとして元のアイテムに保存できます。次の処理を行うモデルまたはスクリプトを作成できます: 初めは、このツールを実行してスタイルシートでメタデータ コンテンツを更新し、そしてすぐに、変更点を元のアイテムに保存します。次のスタイルシートは ArcGIS for Desktop に付属していて、明確に定義されたメタデータ タスクを実行します。
add unique identifier.xslt | 一意の ID の追加または変更はアイテムのメタデータに格納されます。このスタイルシートで変更された ID は Esri PublishedDocID メタデータ エレメントに格納され、ArcIMS メタデータ サービスあるいはジオポータルのようなメタデータ カタログ内のドキュメントを特定するのに使用されます。 |
exact copy of.xslt | アイテムのメタデータの正確なコピーを XML ファイルとして作成。このスタイルシートを使って、たとえばジオデータベース アイテムのメタデータのコピーをローカル ファイルに保存し、そのファイルを開いてメタデータを確認できます。 |
generate metadata template.xslt | ArcGIS メタデータ コンテンツを、他のアイテムがメタデータ テンプレートとしてインポートできるように、新しい XML ファイルにコピーします。同期したメタデータ コンテンツはテンプレートから除外され、空のエレメントは削除されます。 |
remove empty elements.xslt | 空の XML エレメントを削除します。他のスタイルシートを使用して不要なメタデータ コンテンツを削除した後も、空の XML エレメントが残ることがあります。アイテムのメタデータを後で整合チェックしたい場合、空の XML エレメントは問題を引き起こすことがあります。たとえば、エレメントがオプションで、かつ空だと、頻繁にエラーメッセージを受け取ることになります。エレメントが空だからです。エレメントごと削除してしまえばエラーにはならず、メタデータは正しいと認識されます。 |
remove entries from FGDC lineage.xslt | ArcGIS Desktop 9.3.1 によって FGDC 形式の系統に追加されたプロセス手順を削除します。プロセス手順は、メタデータがアイテムにインポートされた場合、ならびにアイテムが別の場所にコピーされた場合に FGDC 形式の系統に追加されました。現在のバージョンの ArcGIS では、この情報がアイテム系統に追加されることはありません。また、この情報が、アイテム系統の他の部分と共に ArcGIS メタデータ形式にアップグレードされることもありません。 |
remove FGDC required hints.xslt | REQUIRED というテキストを含む FGDC 形式のメタデータ エレメントを削除します。これらのテキスト文字列は、有効な FGDC CSDGM メタデータを作成するためにはどのメタデータ エレメントが必要かを示すため、FGDC 形式のメタデータが作成されたときに ArcGIS Desktop 9.3.1 によって追加されました。しかし、アイテムのメタデータを後で整合チェックしたい場合、これらの文字列は問題を引き起こすことがあります。デフォルトのテキストが存在する場合、エレメントは有効であると見なされます。なぜなら、テキストがアイテムについていかなる情報も持たないとしても、とにかく何らかのテキストを格納しているからです。デフォルトのテキスト文字列は、現在のバージョンの ArcGIS によっては追加されません。また、これらの文字列は、アイテムのメタデータ コンテンツと一緒に ArcGIS メタデータ形式にアップグレードされることもありません。 |
remove geoprocessing history.xslt | アイテムのジオプロセシング履歴を削除します。すべてのメタデータのジオプロセシング ツールはアイテムのジオプロセシング履歴を保持するように作られているため、時間が経つと履歴が巨大になり、アイテムのメタデータは XML ドキュメントとして処理するのが難しくなります。このような状況ではアイテムのジオプロセシング履歴を削除する必要があります。 |
remove local storage info.xslt | アイテムのメタデータ内にコンピュータ名があれば、すべて削除します。コンピュータ名がどこで見つかったかにより、処置が異なります。コンピュータ名を持つメタデータ エレメントごと削除される場合もあります。UNC パスからコンピュータ名が削除される場合もあります。あるいは、そのコンピュータの場所が「保留」状態であることを示すよう、エレメントの値が更新される場合もあります。 |
remove pre94 metadata elements.xslt | ArcGIS メタデータ形式に含まれていない ESRI-ISO 形式 XML エレメントおよび FGDC CSDGM 形式 XML エレメントをすべて、アイテムのメタデータから削除します。 |
remove synchronized elements.xslt | ArcGIS メタデータ同期プロセスによってアイテムのメタデータに加えられた情報を削除します。 |
remove thumbnail.xslt | アイテムのサムネイルを削除します。メタデータのジオプロセシング ツールはアイテムのサムネイルを保持するように作られていますが、場合によってはアイテムのサムネイルを削除したい場合があります。[説明] タブ内でメタデータを編集する時に、1 つのアイテムのサムネイルを削除することができます。このスクリプトを使って、多くのアイテムからサムネイルを削除するためのバッチ プロセスを実行することができます。 |
remove unique identifiers.xslt | アイテムのメタデータから、すべての一意のID(ArcGIS によって追加された ID およびメタデータ エディタを使って作成された ID を含む)を削除します。ID は他のアイテムにコピーすることはできません。 |
_MPXML2.xsl | アイテムのメタデータに FGDC CSDGM 形式の XML エレメントが存在する場合は、それを抽出し、正しい順序に並べます。このスタイルシートで抽出された情報は、FGDC メタデータ(読み取り専用)の元に、[説明] タブ内で表示されるコンテンツです。 |
ArcGIS for Desktop に付属しているスタイルシートの中には、メタデータ ジオプロセシング ツールによってインポート、エクスポートならびに更新プロセスそれぞれを実行するために使われるものもあります。
- _MPXML2.xsl
- merge imported metadata with existing.xslt
- merge upgraded FGDC with existing.xslt
- prep metadata for export.xslt
- remove empty elements.xslt
- remove FGDC required hints.xslt
- remove synchronized elements.xslt
- remove unique identifiers.xslt
- upgrade ESRI-ISO to ArcGIS94.xslt
サンプルとして付属しているスタイルシートを使ってタスクを実行する、ユーザ独自の XSLT スタイルシートを作成することもできます。たとえば、次のような処理を実行するスタイルシートを作成できます。
- 住所または電話番号を更新する処理。このプロセスを実行し、[メタデータ インポータ] ツールを使って更新済みメタデータを元の ArcGIS アイテムに保存するモデルを作成します。
- メタデータをエクスポートまたは公開する前に、開示しない情報を削除する処理。この処理を先に実行してから [メタデータのエクスポート] ツールまたは [メタデータの公開] ツールを実行するモデルを作成します。
- 情報を HTML ファイルへエクスポートすると、その情報を Web サイトに組み込むことができます。この処理を定期的に行うスクリプトを作成します。
ArcGIS の外部で出力 XML を使用する場合を除き、Esri メタデータ エレメントおよびバイナリ メタデータ エレメント内の情報が ArcGIS メタデータ変更用 XSLT スタイルシートに削除されるのを回避する必要があります。
使用法
-
XSLT スタイルシートを基に生成された出力ファイルは XML、HTML またはテキスト形式に書式設定できます。このツールによって設定されたデフォルト出力ファイル名には、.xml ファイル拡張子が付きます。使用している XSLT スタイルシートで XML ファイルが生成されない場合、妥当なファイル拡張子をファイル名に付けて指定する必要があります。
[XSLT 変換(XSLT Transformation)] ツールでは XSLT 1.0 テクノロジが採用されていないため、ArcGIS Desktop 9.3.1 以前のバージョンに付属の XSL スタイルシートを使用して ArcGIS アイテムのメタデータまたはスタンドアロン メタデータ XML ファイルを処理することはできません。このツールに採用されているのは、.NET 3.5 Framework でサポートされていない古いテクノロジです。それらの XSL スタイルシートも ArcGIS メタデータ エディタでは使用できません。
-
[XSLT パラメータ] を使用して文字列または XML ファイル名を XSLT スタイルシートに渡した後、このスタイルシートを使ってアイテムのメタデータを変更することができます。たとえば、XSLT スタイルシートでは、文字列として渡された電話番号を取得し、メタデータ内のすべての電話番号を更新するといったこともできます。XSLT スタイルシートで、このパラメータを指定して XML ファイルを渡せば、XML ファイル内に格納されている情報をソース メタデータとマージできます。
値の受け渡し方法を示すサンプルは、ArcGIS に付属している add unique identifier.xslt ファイルをご参照ください。個別の XML ファイル内の情報を ArcGIS アイテムのメタデータとマージする方法を示すサンプルは、merge upgraded FGDC with existing.xslt をご参照ください。
カスタム XSLT スタイルシートを作成して ArcGIS 内にメタデータまたは XML ファイルを表示またはエクスポートしたい場合、XSLT エレメント、XPath エレメント、サポートされている関数および構文の全一覧ついては、Microsoft の NET 3.5 Framework ドキュメントをご参照ください。標準的な XSLT 関数に加えて、.NET 固有の関数が利用できます。
ArcGIS の内部と外部でカスタムスタイルシートを使用したい場合、最も効率的と考えられる方法は XSLT 1.0 エレメント、XPath 1.0 エレメント、関数および構文以外は使わないようにすることです。Microsoft 以外のアプリケーションは多くの場合、.NET 固有の関数である XSLT 関数と XPath 関数をサポートしていません。
XSLT スタイルシートをこのジオプロセシング ツールまたは ArcGIS メタデータ エディタのどちらか一方とともに使用し、ArcGIS に付属のいくつかのカスタム XSLT 関数を使用することにより、メタデータ処理および表示の向上を図ることができます。これらの関数を使用するには、ArcGIS XSLT 関数の名前空間の URI http://www.esri.com/metadata/ を XSLT スタイルシートから参照する必要があります。たとえば、<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:esri="http://www.esri.com/metadata/"> のように指定します。
ArcGIS XSLT 関数の先頭には、ArcGIS XSLT 関数の名前空間に割り当てられている接頭辞を付ける必要があります。Esri XSLT 関数の名前空間には接頭辞 esri が付けられます。上の例で GuidGen() 関数は次のように指定します。<xsl:value-of select="esri:GuidGen()" />
- GuidGen() - 中括弧({ と })を含まない新しい GUID(Globally Unique Identifier)値を返します。たとえば、GUID をメタデータ内に含めることにより、メタデータ ドキュメントまたはドキュメントに記述されているリソースを一意に識別できるようになります。ArcGIS で提供される add unique identifier.xslt ファイルを参考にしてください。
- decodenodeset() - XML エレメントにエスケープ付き XHTML または XML が含まれている場合、この関数を実行するとノード セットが返されます。このノード セットを msxsl:node-set 関数と組み合わせて使用し、以前にエスケープされた個別エレメントを処理できます。ArcGIS で提供される ESRIISO2.xslt ならびに ItemDescription.xslt ファイルを参考にしてください。たとえば、あるアイテムの空間参照のプロパティは、アイテムのメタデータ内にエスケープ付き XML データとして自動的に格納される。ArcGIS Online で公開するための準備として、要約と使用制限のコンテンツをメタデータ エディタ内でマークアップできます。そのコンテンツをエスケープ XHTML として格納されます。
- splitcoords() - カンマ区切りの X、Y 座標の組を取り出し、スペースで区切られたリストに変換します。ArcGIS で提供される upgrade ESRI-ISO to ArcGIS94.xslt ファイルを参考にしてください。
- strtoupper() - 入力テキスト文字列を、大文字だけを使用するように変更します。ArcGIS で提供される add unique identifier.xslt ファイルを参考にしてください。
- striphtml() - この関数を実行すると、XML エレメントにエスケープ付き XHTML あるいは XML が含まれている場合、格納されているテキストが返されます。テキストはすべてのマークアップが削除された状態で返されます。すなわち、2 つの不等号に挟まれたものはマークアップと見なされ、削除されます。ArcGIS で提供される ESRIISO2.xslt、ItemDescription.xslt、ならびに prep metadata for export.xslt ファイルを参考にしてください。たとえば、要約と使用制限エレメントのコンテンツを標準のメタデータ形式でエクスポートしようとするとき、存在する XHTML マークアップはメタデータ コンテンツから削除されます。
- strtolower() - 入力テキスト文字列を、小文字だけを使用するように変更します。ArcGIS で提供される auxCountries.xslt、auxLanguages.xslt、ならびに auxUCUM.xslt ファイルを参考にしてください。
-
[ソース メタデータ] パラメータにはコンプレックス データ タイプが含まれます。このツールをモデル内で使用する場合は、ツールを右クリックし、[変数の作成] → [パラメータから] → [ソース メタデータ] の順に選択して ModelBuilder で [ソース メタデータ] パラメータの変数を作成します。
-
ArcGIS アイテムに、FGDC メタデータ エディタを使用して ArcGIS Desktop 9.3.1 以前で作成されたメタデータ、または FGDC メタデータ エディタ アドインを使用して現在のバージョンの ArcGIS for Desktop で作成されたメタデータが存在している場合は、そのアイテムのメタデータが ArcGIS メタデータにアップグレードされた後も、元の FGDC メタデータ XML エレメントが ArcGIS のメタデータ内に残ります。メタデータには、他の ArcGIS メタデータ エレメントも含まれます。
このツールおよび ArcGIS に付属している _MPXML2.xsl ファイルを使用して、元の FGDC メタデータ エレメントをエクスポートすることができます。上の例で、このファイルによってエクスポートされる情報は、アイテムの元の FGDC 形式のメタデータ コンテンツ(FGDC メタデータ(読み取り専用)の元に、[説明] タブの内で表示される情報)のみです。FGDC エレメントは、出力 XML ファイル内で正しく順序付けされます。
エクスポート ファイルを整合チェックするには、FGDC XML スキーマまたは DTD を使用するか、あるいは mp という USGS メタデータ ユーティリティを使用します。USGS MP Metadata Translator はアイテムの FGDC 形式のメタデータを処理する前に、この操作を内部的に実行します。
-
外部 Web サイトに HTML 形式で公開されるメタデータは、コンテンツが Web サイトに正しく公開されれば、Google などのインターネット検索エンジンによってインデックス付けされます。
構文
パラメータ | 説明 | データ タイプ |
source |
メタデータが変換されるアイテム、または変換されるスタンドアロン XML ファイル。 | Data Element; Layer |
xslt |
実行される変換を定義する W3C 準拠の XSLT 1.0 スタイルシート ファイル いくつかのスタイルシートが ArcGIS から提供されており、<ArcGIS インストール場所>\Metadata\Stylesheets フォルダで利用可能です。 | File |
output |
作成される変換済みのメタデータを含んでいるファイル。 作成されるファイルのタイプは、XSLT スタイルシート内に指定されている出力メソッドに応じて決まります。 | File |
xsltparam (オプション) |
XSLT スタイルシートに渡される XML ファイルまたは文字列 このパラメータを XSLT スタイルシートでキャプチャするには、<xsl:param name="gpparam" /> を XSLT スタイルシート上部の xsl:output エレメントから最初の xsl:template までの間に追加します。例については、add unique identifier.xslt をご参照ください。 | File; String |
コードのサンプル
ArcGIS に付属している ArcGIS.xsl XSLT スタイルシートを使用して、メタデータを Web サイトで使えるように HTML ファイルへエクスポートします。
import arcpy
from arcpy import env
env.workspace = "C:/data"
#set local variables
dir = arcpy.GetInstallInfo("desktop")["InstallDir"]
xslt = dir + "Metadata/Stylesheets/ArcGIS.xsl"
arcpy.XSLTransform_conversion("vegetation", xslt, "vegetation.html", "#")