2009-07-21 14 views
1

リレーショナル・データベースでは、プライマリ・キーと外部キーを使用して、異なるテーブル間でレコードをリンクすることがよくあります。私はXML文書で同じことをすることができるかどうか疑問に思っています。つまり、あるXML文書に、第2のXML文書の「主キー」または類似のもの(ルートノードかどうか)を「指す」要素を含むことができます。考え方は、それは第2の文書への参照(外部キーに類似した種類)であろうということです。2番目のXML文書から1つのXML文書を参照する方法

私は、すべてのコンテンツを1つのファイル/ドキュメント(データの冗長性を含む多くの理由から)ではなく、別々のファイルに格納したいと考えています。このlinkは多かれ少なかれ私が達成しようとしていることを示し、いくつかの選択肢を示唆していますが、すべてのコンテンツを1つのファイルに含めることに制限されています。

多分、XMLの階層的性質は、私がやろうとしていることが意味をなさないというリレーショナルデータベースとは多すぎます。

これを行う方法があると仮定すると、まず第一に、いくつかの種類のXML標準を使用するソリューションを用意することです。理想的には、これはまた、私の場合、Visual StudioのXMLエディタで理想的なケースになりますいくつかのツールのサポートにつながるだろう。標準に基づく解決策が失敗しても、問題に「マイクロソフトの解決策」があれば問題ありません。最後に、標準またはMSソリューションが存在しない場合、私はカスタムソリューションに関する考えを聞くことに興味があります(または、私がしようとしていることが機能しないというフィードバックも機能しません)。

ありがとうございました!

+0

重複していますか? http://stackoverflow.com/questions/1065026/xml-referencing-other-xml-files/1065270 – DeadHead

+0

はい、これは同じ質問と思います。以前の質問は表示されませんでした - ありがとう! –

+0

さらに詳しく述べると、2番目のXMLファイルを名前(URI)で参照したくないという点で、私の質問は少し異なります。他のファイルの要素のキー値/ IDを参照したい。 XMLファイルのコレクションを管理し、さまざまなファイルを調べてキー/ IDを検索することができるということを認めない限り、これは意味をなさないと思います。だから、私はこの問題に対する標準ベースの解決策はないと思う。 –

答えて

0

XInclude他の文書を1つにしますか?最後に私は見ましたが、.NETはXIncudesをサポートしていませんでしたが、そのサポートを追加するオープンソースXInclude.NET projectがあります。

+0

私はこの記事と上記で参照したもう一つの「DeadHead」に基づいて、XInclude/XPointerの使用が最も標準的な解決策のようだと思います。 XInclude.NETプロジェクトの言及をありがとうございます。 http://msdn.microsoft.com/en-us/library/aa302291.aspxを確認したところ、私はそれが本当に私が探しているものだとは思わない。 あるXML文書の内容を別の文書に含めるのは面白くありません。主キーのようなものへの参照を作成したいのです。私はこれが関係データベースではないことを知っていますが、私はこれをもっと考えなければならないでしょう(多分再設計)。 –

1

従来の解決策は、URLを使用することでした。ファイルがすべて同じ場所にある場合、相対URLは非常にうまくいくでしょう。リンクをナビゲートするのは、URLを開くのと同じくらい簡単です。

ターゲットドキュメントの中のものを指し示す場合は、W3Cの標準であるXPointerとXLinkがありますが、ツールでうまくサポートされているとは言えません。そのようなリンクを、URLと要素IDまたはXPath式の組み合わせとして記述するだけでよく、URLのフラグメント識別子にIDまたはXPathを入れることができます。

+0

おかげで、それは賢明な解決策のように聞こえる。あなたが言及したように、基本的なURLのツールサポートはありません。そして、XLinkは多くのベンダーによって採用されていないようです。(私はまだXPointerを見ていません。 –

+0

より多くの反省の後、私は実際に別のファイル(または別のファイルの内容)を含めることを避けたいと思っています。実際には、URIのファイル名を参照するという概念も嫌いです。私が参照したいのは、ある要素のキー値/ IDです。私は、これを行うために標準に基づいたソリューション(つまり、ツーリングサポートはありません)があるとは思わないので、おそらく独自のアプローチを考え出す必要があります。あなたの考えとあなたの時間をありがとう! –

関連する問題