У меня есть хранимая процедура для создания документа XML
на основе стандарта UBL-TR-2.1
. Я только что узнал, как добавить атрибуты (т.е. schemeID="VKN"
) к элементу внутри моего запроса. Теперь у меня другая проблема:
Стандарт UBL-TR-2.1
определяет 3 раза cac:PartyIdentification
с cbc:ID
, но разными schemeID
атрибутами, как вы можете видеть здесь:
...
<cac:PartyIdentification>
<cbc:ID schemeID="VKN">1190538652</cbc:ID>
</cac:PartyIdentification>
<cac:PartyIdentification>
<cbc:ID schemeID="TICARETSICILNO">622171</cbc:ID>
</cac:PartyIdentification>
<cac:PartyIdentification>
<cbc:ID schemeID="MERSISNO">0119053865200011</cbc:ID>
</cac:PartyIdentification>
...
Итак, я попробовал это в своем sql
запросе (я публикую только соответствующие части запроса):
SELECT
@XMLData = xmldat.xmldataCol
FROM
(
SELECT
(
SELECT
....
'VKN' as 'cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID/@schemeID',
v2.TAXNRM as 'cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID',
'TICARETSICILNO' as 'cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID/@schemeID',
'622171' as 'cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID',
'MERSISNO' as 'cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID/@schemeID',
'0119053865200011' as 'cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID',
...
FROM
vorgang2 (nolock) v2
FOR XML PATH('') , ROOT('Invoice')
) as xmldataCol
) as xmldat
Но это выдает ошибку (здесь оригинальное сообщение на немецком языке):
Сообщение 6852, Уровень 16, Состояние 1, Процедура sp_RTIR_TR_Export_to_XML, Строка 85 [Стартовая строка Строка 7] Die attributzentrierte cac: AccountingSupplierParty / cac: Сторона / cac: PartyIdentification / cbc: ID / @ circuitID-Spalte darf inXML-иерархия в FOR XML PATH nicht auf ein nicht attributzentriertes gleichgeordnetes Element folgen.
В английском это примерно так:
Msg 6852, Уровень 16, Состояние 1, Процедура sp_RTIR_TR_Export_to_XML, Строка 85 [Стартовая Строка 7 Строка] Атрибут, которому доверяют, cac: AccountingSupplierParty / cac: Party / cac: PartyIdentification / cbc: ID / @ схема ID столбца в иерархии XML в FOR XML PATH не долженследуйте родительскому элементу, не являющемуся доверенным атрибутом.
Таким образом, проблема заключается в том, что элементы почти одинаковы. И тут возникла проблема с размещением их рядом друг с другом. Есть ли решение этой проблемы? Заранее большое спасибо!
ОБНОВЛЕНИЕ
Решение с добавлением null
между ними не работает должным образом, потому что я получаю этот результат в xml
:
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="VKN"/>
</cac:PartyIdentification>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="TICARETSICILNO">622171</cbc:ID>
</cac:PartyIdentification>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="MERSISNO">0119053865200011</cbc:ID>
</cac:PartyIdentification>
</cac:Party>
</cac:AccountingSupplierParty>
Элементы <cac:AccountingSupplierParty>
и <cac:Party>
не должны повторяться. Структура должна быть такой:
<cac:AccountingSupplierParty>
<cac:Party>
...
<cac:PartyIdentification>
<cbc:ID schemeID="VKN">1190538652</cbc:ID>
</cac:PartyIdentification>
<cac:PartyIdentification>
<cbc:ID schemeID="TICARETSICILNO">622171</cbc:ID>
</cac:PartyIdentification>
<cac:PartyIdentification>
<cbc:ID schemeID="MERSISNO">0119053865200011</cbc:ID>
</cac:PartyIdentification>
...
</cac:Party>
</cac:AccountingSupplierParty>