Итак, в основном у меня есть скрипт, который обновляет XML в зависимости от того, существует ли такой узел или нет. Вот t-sql
DECLARE @newJob XML
SET @newJob = N'<job>
<job-detail>
<name>job-name</name>
</job-detail>
</job>'
;WITH XMLNAMESPACES(DEFAULT 'http://quartznet.sourceforge.net/JobSchedulingData')
UPDATE XmlTable
SET ConfigXml.modify('
insert sql:variable("@newJob")
as last into (/quartz)[1]')
WHERE ConfigXml.exist(N'//quartz/job/job-detail/name[.="job-name"]') = 0
Теперь все работает так, как ожидалось, за исключением того, что только вставленный узел теперь содержит пустое пространство имен, подобное этому.
<job xmlns="">
если я удалю
;WITH XMLNAMESPACES(DEFAULT 'http://quartznet.sourceforge.net/JobSchedulingData')
запрос перестает выполняться. Я думаю, это потому, что в моем корневом узле определены пространства имен.
<quartz xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" overwrite-existing-jobs="true">
Итак, мой вопрос: есть ли способ предотвратить добавление этого пространства имен к вставляемому узлу?