メタデータを作成すると、その中の情報が変更されます。1 つの ArcGIS アイテムに固有の情報であれば、そのメタデータを編集して情報を変更できます。ただし、変更した情報が多くの ArcGIS アイテムのメタデータに含まれる場合、影響を受けるすべてのアイテムのメタデータを手動で編集するプロセスには大きな労力を要します。
こうした状況に対処する最善のアプローチは、ユーザーに代わって編集を実行できる XSLT スタイルシートを作成することです。[XSLT 変換] ツールでメタデータを編集するモデルを使用し、次に示すように、[メタデータ インポーター] ツールを使用して、編集した情報を ArcGIS アイテムにインポートして戻します。
メタデータを更新するための XSLT スタイルシートの作成
XSLT スタイルシートの作成方法の学習に役立つリソースは、インターネット上で数多く提供されています。ただし、次の例は初めて取り組むときに役立つものです。これらは、組織の連絡先情報を変更する方法を示しています。
元のメタデータに次のようなメタデータの連絡先が含まれていたとします。
- 名前は Reception
- 組織名は Esri Learning Center
- 住所詳細は 380 New York St.
- 地区町村は Redlands
- 都道府県名はカリフォルニア、CA
- 郵便番号は 92373
- 国は米国、US
- 電子メール アドレスは info@esri.com
- 電話番号は 909-793-2853
- ファクシミリ番号は 909-793-4801
- この連絡先に指定されている役割は公開者、010
組織の連絡先情報を更新する必要のあるメタデータ XML ドキュメントの抜粋です。
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<mdContact>
<rpIndName>Reception</rpIndName>
<rpOrgName>Esri Learning Center</rpOrgName>
<rpCntInfo>
<cntAddress>
<delPoint>380 New York St.</delPoint>
<city>Redlands</city>
<adminArea>CA</adminArea>
<postCode>92373</postCode>
<country>US</country>
<eMailAdd>info@esri.com</eMailAdd>
</cntAddress>
<cntPhone>
<voiceNum>909-793-2853</voiceNum>
<faxNum>909-793-4801</faxNum>
</cntPhone>
</rpCntInfo>
<role>
<RoleCd value="010"/>
</role>
</mdContact>
...
</metadata>
この連絡先情報の一部を次のように編集する必要があります。
- 名前を連絡先情報から削除する。
- 郵便番号を 92373-8100 に変更する。
- 電子メール アドレスを LearnGIS@esri.com に変更する。
- 電話番号を 888-377-4575 x.1-3204 に変更する。
- インターネット上で情報を提供する Web ページの場所、http://www.esri.com/training を追加する。
- 組織に連絡可能な時間に関する情報、8:00am to 5:00pm Pacific Time を追加する。
上記以外の連絡先情報は変更しません。
次の XSLT スタイルシートがこれらの編集を実行します。名前のメタデータ エレメントは削除されます。アドレス全体が、すべての個別メタデータ エレメントとともに一度に更新されます。電話番号は他の電話情報とは別に更新されます。Web ページと連絡可能時間を追加するには、新しい情報を追加する前に、他の既存の連絡先情報をすべてコピーし、情報が失われないようにする必要があります。
組織の連絡先情報を編集し、他のすべてのメタデータ コンテンツをコピーする XSLT スタイルシート。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no" />
<!-- process the metadata using the templates below -->
<xsl:template match="/">
<xsl:apply-templates select="node() | @*" />
</xsl:template>
<!-- copy all metadata conent -->
<xsl:template match="node() | @*" priority="0">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<!-- all metadata XSLT stylesheets used to update metadata should be identical to this example up to this point -->
<!-- add the templates you'll use to update the metadata below -->
<!-- remove the individual name from the contact information for the organization name Esri Learning Center -->
<xsl:template match="rpIndName[../rpOrgName = 'Esri Learning Center']" priority="1" >
</xsl:template>
<!-- edit the address for any contact with the organization name Esri Learning Center -->
<xsl:variable name="newAddress" >
<cntAddress>
<delPoint>380 New York St.</delPoint>
<city>Redlands</city>
<adminArea>CA</adminArea>
<postCode>92373-8100</postCode>
<country>US</country>
<eMailAdd>LearnGIS@esri.com</eMailAdd>
</cntAddress>
</xsl:variable>
<xsl:template match="cntAddress[../../rpOrgName = 'Esri Learning Center']" priority="1" >
<xsl:copy-of select="$newAddress" />
</xsl:template>
<!-- edit all contacts with the organization name Esri Learning Center to have a new phone number -->
<xsl:variable name="newPhone">888-377-4575 x.1-3204</xsl:variable>
<xsl:template match="voiceNum[../../../rpOrgName = 'Esri Learning Center']" priority="1" >
<voiceNum><xsl:value-of select="$newPhone" /></voiceNum>
</xsl:template>
<!-- add hours of availability for the organization name Esri Learning Center -->
<xsl:template match="rpCntInfo[../rpOrgName = 'Esri Learning Center']" priority="1" >
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
<cntOnlineRes>
<linkage>http://www.esri.com/training</linkage>
</cntOnlineRes>
<cntHours>8:00am to 5:00pm Pacific Time</cntHours>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
この XSLT を使用し、上に例として示したメタデータを [XSLT 変換] ツールを使用して編集すると、次のような出力 XML ファイルが出力として作成されます。[メタデータ インポーター] ツールを使用して、元の ArcGIS アイテムとともにこれらの変更を保存します。
上記の XSLT スタイルシートで作成した更新済みメタデータの抜粋です。
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<mdContact>
<rpOrgName>Esri Learning Center</rpOrgName>
<rpCntInfo>
<cntAddress>
<delPoint>380 New York St.</delPoint>
<city>Redlands</city>
<adminArea>CA</adminArea>
<postCode>92373-8100</postCode>
<country>US</country>
<eMailAdd>LearnGIS@esri.com</eMailAdd>
</cntAddress>
<cntPhone>
<voiceNum>888-377-4575 x.1-3204</voiceNum>
<faxNum>909-793-4801</faxNum>
</cntPhone>
<cntOnlineRes>
<linkage>http://www.esri.com/training</linkage>
</cntOnlineRes>
<cntHours>8:00am to 5:00pm Pacific Time</cntHours>
</rpCntInfo>
<role>
<RoleCd value="010"/>
</role>
</mdContact>
...
</metadata>
ArcGIS for Desktop では、<ArcGIS インストール フォルダー>\Metadata\Stylesheets\gpTools フォルダーに、[変換] ツールボックスでメタデータ ジオプロセシング モデルをサポートするいくつかの XSLT スタイルシートが提供されています。これらを例として使用してください。
独自のスタイルシートを作成するときは、使用する XML 形式を理解しておくと役立ちます。ArcGIS メタデータ XML 形式について説明した XML DTD が <ArcGIS インストール フォルダー>\Metadata\Translator\Rules フォルダーに入っています。