У меня есть хранимая процедура для создания документа XML
на основе стандарта UBL-TR-2.1
. Это запрос, в котором генерируются данные xml
:
WITH XMLNAMESPACES (
'urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2' as ext,
'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2' as cbc,
'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2' as cac,
'http://uri.etsi.org/01903/v1.3.2#' as xades,
'http://www.w3.org/2001/XMLSchema-instance' as xsi,
'http://www.w3.org/2000/09/xmldsig#' as ds
)
SELECT
@XMLData = xmldat.xmldataCol
FROM
(
SELECT
(
SELECT
-- HIER XML Daten generieren
'' as 'ext:UBLExtensions',
'' as 'ext:UBLExtensions/ext:UBLExtension',
'' as 'ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent',
'2.1' as 'cbc:UBLVersionID',
'TR1.2' as 'cbc:CustomizationID',
'' as 'cbc:ProfileID',
v2.nummer as 'cbc:ID',
'false' as 'cbc:CopyIndicator',
cast(@TransGUID as nvarchar(256)) as 'cbc:UUID',
v2.datum as 'cbc:IssueDate',
cast(cast(v2._TSTAMP as datetime) as time) as 'cbc:IssueTime',
'' as 'cbc:InvoiceTypeCode',
v2.FUSSTEXT as 'cbc:Note',
(
select
count(*)
from
vorgpos2 vp2 (nolock)
where
vp2.vorgang2 = v2._kenn
) as 'cbc:LineCountNumeric',
'' as 'cac:AccountingSupplierParty/cac:Party/cbc:WebsiteURI',
FROM
vorgang2 (nolock) v2
inner join
SYSLAND (nolock) sl on v2.SYSLAND = sl._kenn
inner join
(select nummer, [name2] from vorlauf (nolock) where art = 4) as sl_land on sl.LAND = sl_land.NUMMER
inner join
fibupar (nolock) fm on sl.fibupar = fm._kenn
inner join
(select nummer, [name2] from vorlauf (nolock) where art = 4) as k_land on v2.LAND = k_land.NUMMER
left outer join
FibuMBnk (nolock) fm_bank on fm._kenn = fm_bank.FIBUMAND and v2.WAEHRUNG = fm_bank.WAEHRUNG
left outer join
(select nummer, [name] from vorlauf (nolock) where vorlauf.art = 22) as waehr on v2.WAEHRUNG = waehr.NUMMER
inner join
kunden k (nolock) on v2.[partner] = k.[_kenn]
WHERE
v2._kenn = @KENN
FOR XML PATH('') , ROOT('Invoice')
) as xmldataCol
) as xmldat
Пример вывода этого запроса - это XML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 ../xsdrt/maindoc/UBL-Invoice-2.1.xsd" xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent/>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>TR1.2</cbc:CustomizationID>
<cbc:ProfileID/>
<cbc:ID>50000520</cbc:ID>
<cbc:CopyIndicator>false</cbc:CopyIndicator>
<cbc:UUID>8E74EDF1-7BE5-4FE0-8F84-C5224ABA6B48</cbc:UUID>
<cbc:IssueDate>2019-10-15T00:00:00</cbc:IssueDate>
<cbc:IssueTime>09:31:13</cbc:IssueTime>
<cbc:InvoiceTypeCode/>
<cbc:Note>KARGO</cbc:Note>
<cbc:LineCountNumeric>1</cbc:LineCountNumeric>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:WebsiteURI/>
</cac:Party>
</cac:AccountingSupplierParty>
</Invoice>
Это пока работает хорошо. Но теперь некоторые XML elements
должны иметь атрибут в самом element
. Один пример:
<cbc:ID schemeID="VKN_TCKN">7330354914</cbc:ID>
Как добавить атрибут schemeID
со значением в мой запрос?
Спасибо за любую помощь заранее!