特定の順序で必要なすべての要素を選択するために使用したい次のコードがあります。スニペットは次のとおりです。
XmlDocument schema = new XmlDocument();
schema.Load(SchemaFileName);
XmlNamespaceManager xnm = new XmlNamespaceManager(schema.NameTable);
xnm.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
XmlNodeList list = schema.SelectNodes(Path);
ただ、パスは何を書けばいいのかわかりません。理想的には、「sequence」タグのすべての子ノードを選択したいのですが、Path を「sequence」に設定すると、実行しても何も表示されません。ノードリストは空白です。私がやろうとしているのは、xml ファイルの検証に (順番に) 必要な要素の名前を取得することです。
さらに、パスを「//@name」に設定すると、「name」を属性として持つすべての要素を選択する何かが得られます。私が欲しいものは、「sequence」タグの直後です。
また、パスを「xs:sequence」に設定しようとしましたが、「名前空間マネージャーまたは XsltContext が必要です。このクエリにはプレフィックス、変数、またはユーザー定義関数があります。」というエラーが表示されます。私はすでにそれを設定したと思っていたので、これは奇妙です..
どんな助けでも大歓迎です!ありがとう!さらに情報が必要な場合は、喜んで提供いたします。
心から、
tf.rz
編集: Visual Studio C# 2008 を使用しています。.NET 3.5 SP1
基本的な前提は、データテーブル列の並べ替えに関して投稿した別の質問に関連しています。しかし、説明を短くします。xsd スキーマが (適切な順序で) 検証する要素の名前が必要なだけです。私はいくつかの xsd スキーマを持っていますが、それらはすべて同じ「フォーマット」に従っており、非常に静的なファイルです。したがって、sequence タグを安全に探して、そのすべての子ノードを取得できることがわかりました。Michael は、スキーマを記述する方法はたくさんあると述べましたが、私が扱っているスキーマはすべて類似しており、それらの点で静的であるため、これができれば 100% うまくいくでしょう。=)