SQL Server 2005 вставить XML-версию и пространство имен в начале XML-документа - PullRequest
0 голосов
/ 23 марта 2012

Я пытаюсь вставить информацию о версии и пространстве имен в документ XML, созданный в моем запросе sql 2005.

Я попытался объявить переменную xml и присвоить ей литерал.Не уверен, должен ли я использовать пространства имен или могу сделать что-то вроде этого:

DECLARE @doc2 XML;

SET @doc2 =N'<ActionChangeRequest

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"

    xmlns="http://www.customersite.com/xmlapi">
    </ActionRequest>'

SELECT @doc2,
+
    SELECT
      (  SELECT .....
    FROM    tbl A1
    FOR  XML PATH('Customer'),  TYPE ),
      ( SELECT  ......
    FROM tbl        A2
    FOR  XML PATH('RepairFacility'), TYPE),
      ( SELECT .....                             
    FROM tbl J
    FOR  XML PATH('Action'),     TYPE    )
    FOR XML PATH(''), ROOT('Element')

1 Ответ

0 голосов
/ 23 марта 2012

Я не уверен, как вы хотите, чтобы XML выглядел, но при использовании WITH XMLNAMESPACES запрос будет выглядеть примерно так:

;with xmlnamespaces( default 'http://www.customersite.com/xmlapi',
                    'http://www.w3.org/2001/XMLSchema' as xsd,
                    'http://www.w3.org/2001/XMLSchema-instance' as xsi
                    )
select '' as '*'
for xml path(''), root('ActionRequest')

Результат:

<ActionRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               xmlns="http://www.customersite.com/xmlapi"></ActionRequest>
...