<game xmlns="http://my.name.space" ></game>
Dies ist mein Stammelement. Ich habe eine gespeicherte Prozedur geschrieben, um Elemente einzufügen. Um die gespeicherte Prozedur zusammenzufassen, hier ist die SQLXQuery Einfügen ohne Namespace SQL2008
UPDATE ChessGame SET GameHistory.modify('insert <move><player>black</player><piece>pawn</piece><start>E7</start><end>E6</end></move> as last into (/game)[0]') WHERE Id = @GameId;
Nun, wenn MSSQL hat der Einsatz einen leeren Namensraum auch eingesetzt wird, so das Ergebnis ist das
<move xmlns="">
<player>black</player>
<piece>king</piece>
<start>E7</start>
<end>E6</end>
</move>
Jetzt habe ich versucht, mit beiden
WITH XMLNAMESPACES(DEFAULT 'http://my.name.space')
und
GameHistory.modify('declare default element namespace "http://my.name.space"; insert ...')
Aber ich habe überall Präfixe und eine Namespace Deklaration für jedes Element.
Probleme entstehen in Code-Bibliotheken, die Logik fehlt, um die Präfixe MSSQL setzt. Am Ende möchte ich nur ein neues Element in meine Xml-Root einfügen und den Namespace leer lassen (verwenden Sie die Grundeinstellung?). Ich bin alle sehr neu, aber wie ich es verstehe, wenn ich einen Namespace in meinem Root-Element habe, sollten nicht alle Childnodes einen Standard-Namespace meiner Wurzel haben?
Beide Ihrer Beiträge arbeiten 100% ich das Problem gefunden, obwohl bricht mir. als letzte in (/ Spiel) [0] sollte als letzte sein in (/ Spiel) [1] Steht nicht die [0] das erste Element Vorkommen? Ähnlich wie ein nullbasiertes Array? – Matt
@RBarry: Warum bevorzugen Sie '/ *: node'? Heißt das "Spielknoten mit * any * namespace"? –
Matt: Nein, ist ordinal: [1] ist die erste Instanz. – RBarryYoung