ユーザー指定の xml スキーマから空の xml を生成していますが、属性の名前空間宣言と混同しています。
たとえば、このスキーマの場合。
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://tempuri.org/Product"
targetNamespace="http://tempuri.org/Product">
<xs:complexType name="ProductType">
<xs:sequence>
</xs:sequence>
<xs:attribute name="Id" type="xs:string" />
<xs:attribute name="Name" type="xs:string" />
</xs:complexType>
<xs:element name="Product" type="ProductType" />
</xs:schema>
これを生成しました。
<root>
<Product xmlns="http://tempuri.org/Product"
xmlns:ns1="http://tempuri.org/Product"
ns1:Id="1"
ns1:Name="2" />
</root>
しかし、これを生成するビジュアル スタジオ。
<root>
<Product xmlns="http://tempuri.org/Product"
Id="1"
Name="2" />
</root>
どちらが正しいですか ?
更新 1:
xml スキーマのフォーム属性がどのように設定されていても、生成された xml を XML DOM にロードすると、Name 属性の NamespaceURI は常に空の文字列になります。(製品には名前空間がありますが)
これらの属性に対して xpath クエリを実行していますが、常に名前空間プレフィックスを使用するか、親要素の名前空間と常に同じであると想定するかを決定できません。
違いの例;
/*/ns1:Product/@Id
/*/ns1:Product/ns1:@Id
スキーマを知らずに名前空間属性構文 (修飾された ?、修飾されていない ?) の一般的な使用例は何ですか?