XMLSpy のカタログ

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  ユーザーマニュアル > DTD と XML スキーマ >

XMLSpy のカタログ

XMLSpy は OASIS XML カタログ機能のサブセットをサポートしています。XMLSpy のカタログ機能により、広く使われているスキーマ(またたスタイルシートなどその他のファイル)をローカルユーザーフォルダーから取得することができます。これにより全体的な処理スピードが向上し、(ネットワークに接続していない状態でも)ユーザーはオフラインで作業することができるようになり、(URI の変更はカタログファイル内部に限定されるので)ドキュメントのポータビリティーが向上します。

 

XMLSpy のカタログ機能は以下のように動作します。

 

RootCatalog.xml

XMLSpy が開始されると、(以下に示されるような構造を持った)RootCatalog.xml というファイルがロードされ、ファイル内部に記述されているカタログファイルが検索されます。このファイルを修正して、検索するカタログファイルを増やすこともできます(各カタログファイルは nextCatalog 要素にて記述されます)。各カタログファイル内に記述されている URI が、ファイル内で指定されたマッピングに従って解決されます。

 

<?xml version="1.0" encoding"=UTF-8"?>

<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"

         xmlns:spy="http://www.altova.com/catalog_ext"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="urn:oasis:names:tc:entity:xmlns:xml:catalog Catalog.xsd">

  <nextCatalog catalog="%PersonalFolder%/Altova/%AppAndVersionName%/CustomCatalog.xml"/>

  <nextCatalog catalog="CoreCatalog.xml"/>

  <!-- Include all catalogs under common schemas folder on the first directory level -->

  <nextCatalog spy:recurseFrom="%AltovaCommonFolder%/Schemascatalog="catalog.xmlspy:depth="1"/>

  <!-- Include all catalogs under common XBRL folder on the first directory level -->

  <nextCatalog spy:recurseFrom="%AltovaCommonFolder%/XBRLcatalog="catalog.xmlspy:depth="1"/>

</catalog>

 

上で示されるファイルの内容にて、%AltovaCommonFolder% という変数で指定されている Schemas ならびに XBRL フォルダー内部に catalog.xml という名前のカタログファイルがあることに注目してください(%AltovaCommonFolder% 変数の値については以下を参照ください)。

 

Altova 共通フォルダー以下にあるカタログファイルにより(SVG や WSDL よく使われる定義済みのスキーマや XBRL タクソノミのパブリックならびにシステム識別子が、ローカルにコピーされた対応するスキーマを指し示す URI にマッピングされます。これらのスキーマは XMLSpy がインストールされる際に Altova 共通フォルダーにインストールされます。エラーが発生する可能性があるので、これらファイル内のマッピングを複製しないように注意してください。

 

CoreCatalog.xml、CustomCatalog.xml、そして Catalog.xml

上で記されている RootCatalog.xml にて、CoreCatalog.xmlCustomCatalog.xml が検索のために使用されていることに注目してください:

 

CoreCatalog.xml には Altova 共通フォルダーを指し示すために使われる Altova 独自のマッピングが含まれています。
CustomCatalog.xml はマッピングを作成するためのスケルトンファイルです。Altova 共通フォルダー以下のカタログファイルで指定されていないスキーマファイルへのマッピングを CustomCatalog.xml に追加することができます。OASIS カタログ機能によりサポートされている要素を使用してください(以下を参照)。
Altova 共通フォルダーには数多くの Catalog.xml ファイルが格納されています。各ファイルは Altova 共通フォルダー以下のスキーマフォルダー または XBRL タクソノミ  フォルダーに格納され、ローカルにコピーされたパブリックならびにシステム識別子のスキーマを指し示す URI のマッピングを行ないます。

 

カタログファイルとスキーマの場所

RootCatalog.xml ならびに CoreCatalog.xml は XMLSpy アプリケーションフォルダー以下にインストールされます。CustomCatalog.xmlMyDocuments\Altova\XMLSpy フォルダー以下に納されています。catalog.xml ファイルは各スキーマフォルダー以下にあり、これらスキーマフォルダーは %AltovaCommonFolder%\Schema ならびに %AltovaCommonFolder%\XBRL に収められています。

 

シェル環境変数と Altova 変数

nextCatalog 要素ではシェル環境変数が使用され、システムに関係する場所へのパスが参照されます(上の RootCatalog.xml の内容を参照)。以下のシェル環境変数がサポートされます:

 

%AltovaCommonFolder%

C:\Program Files\Altova\Common2019

%DesktopFolder%

現在のユーザーのデスクトップフォルダーへのフルパス

%ProgramMenuFolder%

現在のユーザーのプログラムメニューフォルダーへのフルパス

%StartMenuFolder%

現在のユーザーのスタートメニューフォルダーへのフルパス

%StartUpFolder%

現在のユーザーのスタートアップフォルダーへのフルパス

%TemplateFolder%

現在のユーザーのテンプレートフォルダーへのフルパス

%AdminツールFolder%

現在のユーザーの管理ツールが収められているシステムディレクトリへのへのフルパス

%AppDataFolder%

現在のユーザーのアプリケーションデータフォルダーへのフルパス

%CommonAppDataFolder%

全てのユーザーのアプリケーションデータが収められているファイルディレクトリへのフルパス

%FavoritesFolder%

現在のユーザーのお気に入りフォルダーへのフルパス

%PersonalFolder%

現在のユーザーの個人用フォルダーへのフルパス

%SendToFolder%

現在のユーザーの SentTo フォルダーへのフルパス

%FontsFolder%

システムフォントフォルダーへのフルパス

%ProgramFilesFolder%

現在のユーザーの Program Files フォルダーへのフルパス

%CommonFilesFolder%

現在のユーザーの Common Files フォルダーへのフルパス

%WindowsFolder%

現在のユーザーの Windows フォルダーへのフルパス

%SystemFolder%

現在のユーザーのシステムフォルダーへのフルパス

%LocalAppDataFolder%

ローカルアプリケーションのデータリポジトリとして使用されるファイルシステムディレクトリへのフルパス

%MyPicturesFolder%

マイ ピクチャフォルダーへのフルパス

 

カタログの動作: DTD

DTD が呼び出された際のリダイレクトにカタログは使用されます。カタログファイル内に記述されているマッピング情報を使用することで、パブリックまたはシステム識別子をローカルの URI にマッピングします。例えば XML ファイル内で宣言されている DOCTYPE 宣言が読まれたとき、カタログファイルマッピングにより PUBLIC または SYSTEM 識別子がローカルにあるリソースを参照します。

 

よく使われるスキーマや PUBLIC 識別子は通常定義が定まっており、ローカルにコピーされている URI をカタログファイルが指し示すだけで事足りてしまいます。XML ドキュメントが解析されると内部にある PUBLIC 識別子が読み込まれます。カタログファイル内に識別子が見つかった場合、カタログファイル内の対応する URL が検索され、その場所からスキーマが読み込まれます。例えば、以下の SVG ファイルが XMLSpy で開かれた場合:

 

<?xml version="1.0" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"

"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

 

<svg width="20" height="20" xml:space="preserve">

  <g style="fill:red; stroke:#000000">

     <rect x="0" y="0" width="15" height="15"/>

     <rect x="5" y="5" width="15" height="15"/>

  </g>

</svg>

 

このドキュメントが読み込まれ、PUBLIC 識別子のカタログが検索されます。例えば、カタログファイルに以下のような記述があるとしましょう:

 

 

<catalog>

  ...

    <public publicId="-//W3C//DTD SVG 1.1//EN" uri="schemas/svg/svg11.dtd"/>

  ...

</catalog>

 

これで PUBLIC 識別子に対するマッチが見つかりました。SVG DTD は schemas/svg/svgll.dtd にリダイレクトされ(パスはカタログファイルからの相対パスになります)、このローカルファイルが DTD として使用されます。カタログ内に対応するマッピングが存在しない場合、XML ドキュメントに記述されている URL (上の例の場合だと http://www.w3.org/Graphics/SVG/1.1/DTD/svgll.dtd)が使用されます。

 

カタログの動作:スキーマ

XMLSpy では、XML スキーマへのリダイレクトにカタログを使用することもできます。XML インスタンスファイルでは、XML ドキュメントのトップレベルドキュメント要素内部の xsi:schemaLocation 属性内にてスキーマへの参照が記述されます。
 

xsi:schemaLocation="http://www.xmlspy.com/schemas/orgchart OrgChart.xsd"

 

通常、(上の例にて太字で示されている)属性値の URI には、実際に存在するスキーマの位置が記述されます。カタログによりスキーマが参照された場合、実際に存在する XML スキーマを指し示す必要は無いものの、xsi:schemaLocation 属性の妥当性を満たすために何らかの値を入力する必要があります。属性の URI 部分には、例えば hoge などの値を入力することでも、妥当性を確保することができます。xsi:schemaLocation 属性値の名前空間部分(上の例における http://www.xmlspy.com/schemas/orgchart)により、カタログ内にスキーマを配置することができます。カタログでは、以下のエントリーにより名前空間部分をベースにしたスキーマの識別が行われます。

 

<uri name="http://www.xmlspy.com/schemas/orgchart" uri="C:\MySchemas\OrgChart.xsd"/>

 

XMLSpy によりサポートされるカタログサブセット

CustomeCatalog.xml (または XMLSpy により読み込まれる他のカタログファイル)内でエントリを作成する際、以下に示される OASIS カタログ仕様の要素だけを使うようにしてください。以下に各要素と属性の説明を示します。更に詳しい情報については、XML カタログ仕様(英文)を参照ください。各要素は xml:base 属性を持ち、要素のベース URI を指定できることに注意してください。

 

<public publicId="リソースの PublicID" uri="ローカルファイルの URL"/>
<system systemId="リソースの SystemID" uri="ローカルファイルの URL"/>
<uri name="ファイル名" uri="ファイル名により識別されるファイルの URL"/>
<rewriteURI uriStartString="書き直す URI の最初の文字列" rewritePrefix="StartString を置き換える文字列"/>
<rewriteSystem systemIdStartString="SystemID の最初の文字列" rewritePrefix="ローカルのリソースを検索するための置き換え文字列"/>

 

(殆どのスタイルシートの様に)パブリックな識別子が存在しない場合、system 要素を使うことでシステム識別子を URL に直接マッピングすることができます。また、uri 要素により URI を別の URI にマッピングすることもできます。rewriteURIrewriteSystem 要素により URI またはシステム識別子の最初の文字列を書き換えることができます。これによりファイルパスの最初の部分を置き換えて、別のディレクトリにターゲットを変更することができます。これら要素に関する詳しい情報については XML カタログ仕様(英文)を参照ください。

 

リリース 2014 以降 XMLSpy は XML カタログ仕様 (OASIS Standard V1.1, 7 October 2005) 仕様に準拠します。この仕様は (パブリック ID または システム ID を持つ) 外部識別子の参照を (パブリック ID または システム ID ではない URI を持つ) URI の参照と厳密に区別します。 名前空間 URI はですから— パブリック ID または システム IDではなく—URI と見なされ、外部識別子の参照ではなく URI 参照に使用されます。ます。  バージョン 2014 以前の XMLSpy バージョンでは、スキーマ名前空間 URI は、 <public> マッピングを介して変換されていましたが、バージョン以降は <uri> マッピングが使用される必要があります。

 

Prior to v2014:  <public publicID="http://www.MyMapping.com/ref"  uri="file:///C:/MyDocs/Catalog/test.xsd"/>

V-2014 onwards:  <uri name="http://www.MyMapping.com/ref"  uri="file:///C:/MyDocs/Catalog/test.xsd"/>

 

スキーマに従ったファイル拡張子とインテリジェントな編集

指定したスキーマのルールに準拠するよう XMLSpy のインテリジェントな編集機能が適用された場合、カタログファイルを使うことで、ドキュメントに特定の拡張子を指定することができます。例えば独自のファイル拡張子 .myhtml を作成して、HTML DTD に従ったファイルの検証を行ないたい場合、以下の要素を CustomCatalog.xml 内の <catalog> 要素の子要素として追加することで、この拡張子を持つファイルのインテリジェント編集を行うことができます。

 

<spy:fileExtHelper ext="myhtml" uri="schemas/xhtml/xhtmll-transitional.dtd"/>

 

これにより XMLSpy 内で .myhtml ファイルを編集する際のインテリジェント編集(自動補完、入力ヘルパーなど)が XHTML 1.0 Transition DTD に従った形で使えるようになります。似たようなエントリを含んでいる %AltovaCommonFolder%\Schemas\xhtml フォルダー以下の catalog.xml ファイルも参照ください。

 

XML スキーマ仕様

XML スキーマの仕様情報は XMLSpy に収められており、XML スキーマ (.xsd) ドキュメントの妥当性は、内部にある情報をベースにチェックされます。そのため、XML スキーマ仕様を定義するスキーマに対して参照が行われることはありません。

 

%AltovaCommonFolder%\Schemas\schema フォルダー以下にある catalog.xml ファイルには、古い XML スキーマ仕様の DTD に対する参照が記述されています。このファイルから参照されるスキーマファイルを使って XML スキーマドキュメントの検証を行うべきではありません。これらのファイルは、以前の勧告に従ったドキュメントを作成する際に、XMLSpy の入力ヘルパーにて該当する編集情報を表示させるためだけに使用されます。

 

更に詳しい情報

カタログに関する更に詳しい情報は、XML カタログ仕様(英文)を参照ください。

 


(C) 2018 Altova GmbH