私はデフォルトの名前空間を持つXML文書を持っています。私は/someroot/somechild
のようなXPathのクエリに、私が名前空間を接頭辞、例えばx
にマップして、その接頭語/x:someroot/x:somechild
を使用しなければならないまで見つけることができませんでした。これは、何らかの属性を持つ要素をクエリしたい場合は、/x:someroot/x:somechild[@x:someattribute]
が動作しませんが、/x:someroot/x:somechild[@someattribute]
が機能するまで、これは問題ありません。 XML文書に名前空間接頭辞が定義されていないと、すべてのノード、要素、属性などがデフォルトの名前空間を継承すると考えられます。むしろ要素がデフォルトの名前空間を継承しているように見えますが、属性はそうではありません。確かに、私のXMLの理解は非常に限られています。何が欠けていますか?XPath要素はデフォルトの名前空間を継承しますが、属性は継承しないのはなぜですか?
私の文書はプレフィックスに、ドキュメントのデフォルトの名前空間をマッピングするために、上のXmlNamespaceManager
オブジェクトを照会するように私は、.NET XmlDocument
オブジェクトを使用しています、とSelectSingleNode(String, XmlNamespaceManager)
方法は文書で照会し。
の可能性のある重複した[非修飾属性名のためのXMLのデフォルトの名前空間?](http://stackoverflow.com/questions/3312390/xml-default-namespaces-for-unqualified-attribute-names) –
あなたが求めます "なぜ? "、あなたはどんな答えを期待していますか?あなたは、XML名前空間ワーキンググループのメンバーが設計決定を下した時点で与えられた根拠を知りたいですか?あるいは、なぜこれが合理的な決定を下したのかについて、ある種の第三者の理論的根拠が必要ですか?それとも、スペックのルールへのポインタがほしいのですか?はい、これは動作するのですか? –
ダブですが、私は私が好きな答えを得ました。私は何をお勧めしますか? –