Я работаю над приложением BizTalk, которое выполняет типизированный опрос из базы данных с использованием адаптера WCF SQL. Изучив, как группировать данные из сгенерированной схемы в мою каноническую схему, я столкнулся с Muenchian Grouping как общее решение. Однако мне сложно определить, как применить его к моей ситуации.XSLT Muenchian группировка из схемы BizTalk WCF-SQL по ID по группам
В принципе, данные, которые я опроса распространяю на несколько таблиц, представляют собой сочетание отношений «один к одному» и «один ко многим», которые используют один и тот же первичный ключ для всех таблиц. Из-за отношений «один ко многим» я не могу извлечь все данные из разных таблиц с помощью одного оператора SELECT и решил вместо этого разделить его на multiple queries в моем заявлении о опросе, который сгенерировал исходную схему, показанную на изображении ниже.
То, что я пытаюсь сделать, это просто отделить все записи от моей исходной схемы от «SharedID» и поместить их в соответствующую запись в моей целевой схеме. (У меня также есть идентификаторы номеров вторичных экземпляров для подгрупп, но я бы предположил, что они будут решены таким же образом.) Все примеры, которые я видел, показывают, как это сделать, когда ключ XSLT получен из single node или multiple nodes из исходной схемы, но они не показывают, как учитывать, когда один и тот же идентификатор поступает из нескольких узлов.
Я проанализировал примеры из многих источников, насколько это возможно, но я до сих пор не знаком с XSLT, поэтому мне сложно определить, как настроить мои ключи и каждое утверждение для использования этого подхода. Любая помощь, способствующая демистификации, как мне следует делать это, будет очень признательна. Благодаря!
Вот скриншот карты с использованием обобщенных версий структуры источника и схемы назначения.
Вот XSLT, что карта выше генерирует, который я использую в качестве моей отправной точки.
<?xml version="1.0" encoding="UTF-16"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:var="http://schemas.microsoft.com/BizTalk/2003/var"
exclude-result-prefixes="msxsl var s0"
version="1.0"
xmlns:s0="http://SmallGenericSchemaTest.Schemas/SourceSchema"
xmlns:ns0="http://SmallGenericSchemaTest.Schemas/DestinationSchema">
<xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />
<xsl:template match="/">
<xsl:apply-templates select="/s0:TypedPolling" />
</xsl:template>
<xsl:template match="/s0:TypedPolling">
<ns0:AllRecords>
<ns0:SingleRecord>
<xsl:for-each select="s0:TypedPollingResultSet0">
<xsl:for-each select="s0:TypedPollingResultSet0">
<ns0:GroupA>
<xsl:if test="s0:SharedID">
<ns0:SharedID>
<xsl:value-of select="s0:SharedID/text()" />
</ns0:SharedID>
</xsl:if>
<xsl:if test="s0:MiscInfoA1">
<ns0:MiscInfoA1>
<xsl:value-of select="s0:MiscInfoA1/text()" />
</ns0:MiscInfoA1>
</xsl:if>
<xsl:if test="s0:MiscInfoA2">
<ns0:MiscInfoA2>
<xsl:value-of select="s0:MiscInfoA2/text()" />
</ns0:MiscInfoA2>
</xsl:if>
</ns0:GroupA>
</xsl:for-each>
</xsl:for-each>
<xsl:for-each select="s0:TypedPollingResultSet1">
<xsl:for-each select="s0:TypedPollingResultSet1">
<ns0:GroupB>
<xsl:if test="s0:MiscInfoB1">
<ns0:MiscInfoB1>
<xsl:value-of select="s0:MiscInfoB1/text()" />
</ns0:MiscInfoB1>
</xsl:if>
<xsl:if test="s0:MiscInfoB2">
<ns0:MiscInfoB2>
<xsl:value-of select="s0:MiscInfoB2/text()" />
</ns0:MiscInfoB2>
</xsl:if>
<ns0:SubGroupBAContainer>
<xsl:for-each select="../../s0:TypedPollingResultSet2">
<xsl:for-each select="s0:TypedPollingResultSet2">
<ns0:SubGroupBA>
<xsl:if test="s0:MiscInfoBA1">
<ns0:MiscInfoBA1>
<xsl:value-of select="s0:MiscInfoBA1/text()" />
</ns0:MiscInfoBA1>
</xsl:if>
<xsl:if test="s0:MiscInfoBA2">
<ns0:MiscInfoBA2>
<xsl:value-of select="s0:MiscInfoBA2/text()" />
</ns0:MiscInfoBA2>
</xsl:if>
</ns0:SubGroupBA>
</xsl:for-each>
</xsl:for-each>
</ns0:SubGroupBAContainer>
<ns0:SubGroupBBContainer>
<xsl:for-each select="../../s0:TypedPollingResultSet3">
<xsl:for-each select="s0:TypedPollingResultSet3">
<ns0:SubGroupBB>
<xsl:if test="s0:MiscInfoBB1">
<ns0:MiscInfoBB1>
<xsl:value-of select="s0:MiscInfoBB1/text()" />
</ns0:MiscInfoBB1>
</xsl:if>
<xsl:if test="s0:MiscInfoBB2">
<ns0:MiscInfoBB2>
<xsl:value-of select="s0:MiscInfoBB2/text()" />
</ns0:MiscInfoBB2>
</xsl:if>
</ns0:SubGroupBB>
</xsl:for-each>
</xsl:for-each>
</ns0:SubGroupBBContainer>
</ns0:GroupB>
</xsl:for-each>
</xsl:for-each>
<ns0:GroupCContainer>
<xsl:for-each select="s0:TypedPollingResultSet4">
<xsl:for-each select="s0:TypedPollingResultSet4">
<ns0:GroupC>
<xsl:if test="s0:GroupCInstanceID">
<ns0:GroupCInstanceID>
<xsl:value-of select="s0:GroupCInstanceID/text()" />
</ns0:GroupCInstanceID>
</xsl:if>
<xsl:if test="s0:MiscInfoC1">
<ns0:MiscInfoC1>
<xsl:value-of select="s0:MiscInfoC1/text()" />
</ns0:MiscInfoC1>
</xsl:if>
<xsl:if test="s0:MiscInfoC2">
<ns0:MiscInfoC2>
<xsl:value-of select="s0:MiscInfoC2/text()" />
</ns0:MiscInfoC2>
</xsl:if>
</ns0:GroupC>
</xsl:for-each>
</xsl:for-each>
</ns0:GroupCContainer>
<ns0:GroupDContainer>
<xsl:for-each select="s0:TypedPollingResultSet5">
<xsl:for-each select="s0:TypedPollingResultSet5">
<ns0:GroupD>
<xsl:if test="s0:GroupDInstanceID">
<ns0:GroupDInstanceID>
<xsl:value-of select="s0:GroupDInstanceID/text()" />
</ns0:GroupDInstanceID>
</xsl:if>
<xsl:if test="s0:MiscInfoD1">
<ns0:MiscInfoD1>
<xsl:value-of select="s0:MiscInfoD1/text()" />
</ns0:MiscInfoD1>
</xsl:if>
<xsl:if test="s0:MiscInfoD2">
<ns0:MiscInfoD2>
<xsl:value-of select="s0:MiscInfoD2/text()" />
</ns0:MiscInfoD2>
</xsl:if>
<xsl:for-each select="../../s0:TypedPollingResultSet6">
<xsl:for-each select="s0:TypedPollingResultSet6">
<ns0:SubGroupDA>
<xsl:if test="s0:MiscInfoDA1">
<ns0:MiscInfoDA1>
<xsl:value-of select="s0:MiscInfoDA1/text()" />
</ns0:MiscInfoDA1>
</xsl:if>
<xsl:if test="s0:MiscInfoDA2">
<ns0:MiscInfoDA2>
<xsl:value-of select="s0:MiscInfoDA2/text()" />
</ns0:MiscInfoDA2>
</xsl:if>
</ns0:SubGroupDA>
</xsl:for-each>
</xsl:for-each>
<ns0:SubGroupDBContainer>
<xsl:for-each select="../../s0:TypedPollingResultSet7">
<xsl:for-each select="s0:TypedPollingResultSet7">
<ns0:SubGroupDB>
<xsl:if test="s0:MiscInfoDB1">
<ns0:MiscInfoDB1>
<xsl:value-of select="s0:MiscInfoDB1/text()" />
</ns0:MiscInfoDB1>
</xsl:if>
<xsl:if test="s0:MiscInfoDB2">
<ns0:MiscInfoDB2>
<xsl:value-of select="s0:MiscInfoDB2/text()" />
</ns0:MiscInfoDB2>
</xsl:if>
</ns0:SubGroupDB>
</xsl:for-each>
</xsl:for-each>
</ns0:SubGroupDBContainer>
</ns0:GroupD>
</xsl:for-each>
</xsl:for-each>
</ns0:GroupDContainer>
</ns0:SingleRecord>
</ns0:AllRecords>
</xsl:template>
</xsl:stylesheet>
РЕДАКТИРОВАТЬ:
Вот XML-документ ввода образца и требуемый выход.
ввода пробы:
<ns0:TypedPolling xmlns:ns0="http://SmallGenericSchemaTest.Schemas/SourceSchema">
<ns0:TypedPollingResultSet0>
<ns0:TypedPollingResultSet0>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:MiscInfoA1>A1_1</ns0:MiscInfoA1>
<ns0:MiscInfoA2>A2_1</ns0:MiscInfoA2>
</ns0:TypedPollingResultSet0>
<ns0:TypedPollingResultSet0>
<ns0:SharedID>SharedID_2</ns0:SharedID>
<ns0:MiscInfoA1>A1_2</ns0:MiscInfoA1>
<ns0:MiscInfoA2>A2_2</ns0:MiscInfoA2>
</ns0:TypedPollingResultSet0>
</ns0:TypedPollingResultSet0>
<ns0:TypedPollingResultSet1>
<ns0:TypedPollingResultSet1>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:MiscInfoB1>B1_1</ns0:MiscInfoB1>
<ns0:MiscInfoB2>B2_1</ns0:MiscInfoB2>
</ns0:TypedPollingResultSet1>
<ns0:TypedPollingResultSet1>
<ns0:SharedID>SharedID_2</ns0:SharedID>
<ns0:MiscInfoB1>B1_2</ns0:MiscInfoB1>
<ns0:MiscInfoB2>B2_2</ns0:MiscInfoB2>
</ns0:TypedPollingResultSet1>
</ns0:TypedPollingResultSet1>
<ns0:TypedPollingResultSet2>
<ns0:TypedPollingResultSet2>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:MiscInfoBA1>BA1_1A</ns0:MiscInfoBA1>
<ns0:MiscInfoBA2>BA2_1A</ns0:MiscInfoBA2>
</ns0:TypedPollingResultSet2>
<ns0:TypedPollingResultSet2>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:MiscInfoBA1>BA1_1B</ns0:MiscInfoBA1>
<ns0:MiscInfoBA2>BA2_1B</ns0:MiscInfoBA2>
</ns0:TypedPollingResultSet2>
<ns0:TypedPollingResultSet2>
<ns0:SharedID>SharedID_2</ns0:SharedID>
<ns0:MiscInfoBA1>BA1_2A</ns0:MiscInfoBA1>
<ns0:MiscInfoBA2>BA2_2A</ns0:MiscInfoBA2>
</ns0:TypedPollingResultSet2>
<ns0:TypedPollingResultSet2>
<ns0:SharedID>SharedID_2</ns0:SharedID>
<ns0:MiscInfoBA1>BA1_2B</ns0:MiscInfoBA1>
<ns0:MiscInfoBA2>BA2_2B</ns0:MiscInfoBA2>
</ns0:TypedPollingResultSet2>
</ns0:TypedPollingResultSet2>
<ns0:TypedPollingResultSet3>
<ns0:TypedPollingResultSet3>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:MiscInfoBB1>BB1_1A</ns0:MiscInfoBB1>
<ns0:MiscInfoBB2>BB2_1A</ns0:MiscInfoBB2>
</ns0:TypedPollingResultSet3>
<ns0:TypedPollingResultSet3>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:MiscInfoBB1>BB1_1B</ns0:MiscInfoBB1>
<ns0:MiscInfoBB2>BB2_1B</ns0:MiscInfoBB2>
</ns0:TypedPollingResultSet3>
<ns0:TypedPollingResultSet3>
<ns0:SharedID>SharedID_2</ns0:SharedID>
<ns0:MiscInfoBB1>BB1_2</ns0:MiscInfoBB1>
<ns0:MiscInfoBB2>BB2_2</ns0:MiscInfoBB2>
</ns0:TypedPollingResultSet3>
</ns0:TypedPollingResultSet3>
<ns0:TypedPollingResultSet4>
<ns0:TypedPollingResultSet4>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:GroupCInstanceID>GroupCInstanceID_1A</ns0:GroupCInstanceID>
<ns0:MiscInfoC1>C1_1A</ns0:MiscInfoC1>
<ns0:MiscInfoC2>C2_1A</ns0:MiscInfoC2>
</ns0:TypedPollingResultSet4>
<ns0:TypedPollingResultSet4>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:GroupCInstanceID>GroupCInstanceID_1B</ns0:GroupCInstanceID>
<ns0:MiscInfoC1>C1_1B</ns0:MiscInfoC1>
<ns0:MiscInfoC2>C2_1B</ns0:MiscInfoC2>
</ns0:TypedPollingResultSet4>
<ns0:TypedPollingResultSet4>
<ns0:SharedID>SharedID_2</ns0:SharedID>
<ns0:GroupCInstanceID>GroupCInstanceID_2</ns0:GroupCInstanceID>
<ns0:MiscInfoC1>C1_2</ns0:MiscInfoC1>
<ns0:MiscInfoC2>C2_2</ns0:MiscInfoC2>
</ns0:TypedPollingResultSet4>
</ns0:TypedPollingResultSet4>
<ns0:TypedPollingResultSet5>
<ns0:TypedPollingResultSet5>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:GroupDInstanceID>GroupDInstanceID_1A</ns0:GroupDInstanceID>
<ns0:MiscInfoD1>D1_1A</ns0:MiscInfoD1>
<ns0:MiscInfoD2>D2_1A</ns0:MiscInfoD2>
</ns0:TypedPollingResultSet5>
<ns0:TypedPollingResultSet5>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:GroupDInstanceID>GroupDInstanceID_1B</ns0:GroupDInstanceID>
<ns0:MiscInfoD1>D1_1B</ns0:MiscInfoD1>
<ns0:MiscInfoD2>D2_1B</ns0:MiscInfoD2>
</ns0:TypedPollingResultSet5>
<ns0:TypedPollingResultSet5>
<ns0:SharedID>SharedID_2</ns0:SharedID>
<ns0:GroupDInstanceID>GroupDInstanceID_2</ns0:GroupDInstanceID>
<ns0:MiscInfoD1>D1_2</ns0:MiscInfoD1>
<ns0:MiscInfoD2>D2_2</ns0:MiscInfoD2>
</ns0:TypedPollingResultSet5>
</ns0:TypedPollingResultSet5>
<ns0:TypedPollingResultSet6>
<ns0:TypedPollingResultSet6>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:GroupDInstanceID>GroupDInstanceID_1A</ns0:GroupDInstanceID>
<ns0:MiscInfoDA1>DA1_1A</ns0:MiscInfoDA1>
<ns0:MiscInfoDA2>DA2_1A</ns0:MiscInfoDA2>
</ns0:TypedPollingResultSet6>
<ns0:TypedPollingResultSet6>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:GroupDInstanceID>GroupDInstanceID_1B</ns0:GroupDInstanceID>
<ns0:MiscInfoDA1>DA1_1B</ns0:MiscInfoDA1>
<ns0:MiscInfoDA2>DA2_1B</ns0:MiscInfoDA2>
</ns0:TypedPollingResultSet6>
<ns0:TypedPollingResultSet6>
<ns0:SharedID>SharedID_2</ns0:SharedID>
<ns0:GroupDInstanceID>GroupDInstanceID_2</ns0:GroupDInstanceID>
<ns0:MiscInfoDA1>DA1_2</ns0:MiscInfoDA1>
<ns0:MiscInfoDA2>DA2_2</ns0:MiscInfoDA2>
</ns0:TypedPollingResultSet6>
</ns0:TypedPollingResultSet6>
<ns0:TypedPollingResultSet7>
<ns0:TypedPollingResultSet7>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:GroupDInstanceID>GroupDInstanceID_1A</ns0:GroupDInstanceID>
<ns0:MiscInfoDB1>DB1_1A</ns0:MiscInfoDB1>
<ns0:MiscInfoDB2>DB2_1A</ns0:MiscInfoDB2>
</ns0:TypedPollingResultSet7>
<ns0:TypedPollingResultSet7>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:GroupDInstanceID>GroupDInstanceID_1B</ns0:GroupDInstanceID>
<ns0:MiscInfoDB1>DB1_1B</ns0:MiscInfoDB1>
<ns0:MiscInfoDB2>DB2_1B</ns0:MiscInfoDB2>
</ns0:TypedPollingResultSet7>
<ns0:TypedPollingResultSet7>
<ns0:SharedID>SharedID_2</ns0:SharedID>
<ns0:GroupDInstanceID>GroupDInstanceID_2</ns0:GroupDInstanceID>
<ns0:MiscInfoDB1>DB1_2</ns0:MiscInfoDB1>
<ns0:MiscInfoDB2>DB2_2</ns0:MiscInfoDB2>
</ns0:TypedPollingResultSet7>
</ns0:TypedPollingResultSet7>
</ns0:TypedPolling>
Желаемый результат:
<ns0:AllRecords xmlns:ns0="http://SmallGenericSchemaTest.Schemas/DestinationSchema">
<ns0:SingleRecord>
<ns0:GroupA>
<ns0:SharedID>SharedID_1</ns0:SharedID>
<ns0:MiscInfoA1>A1_1</ns0:MiscInfoA1>
<ns0:MiscInfoA2>A2_1</ns0:MiscInfoA2>
</ns0:GroupA>
<ns0:GroupB>
<ns0:MiscInfoB1>B1_1</ns0:MiscInfoB1>
<ns0:MiscInfoB2>B2_1</ns0:MiscInfoB2>
<ns0:SubGroupBAContainer>
<ns0:SubGroupBA>
<ns0:MiscInfoBA1>BA1_1A</ns0:MiscInfoBA1>
<ns0:MiscInfoBA2>BA2_1A</ns0:MiscInfoBA2>
</ns0:SubGroupBA>
<ns0:SubGroupBA>
<ns0:MiscInfoBA1>BA1_1B</ns0:MiscInfoBA1>
<ns0:MiscInfoBA2>BA2_1B</ns0:MiscInfoBA2>
</ns0:SubGroupBA>
</ns0:SubGroupBAContainer>
<ns0:SubGroupBBContainer>
<ns0:SubGroupBB>
<ns0:MiscInfoBB1>BB1_1A</ns0:MiscInfoBB1>
<ns0:MiscInfoBB2>BB2_1A</ns0:MiscInfoBB2>
</ns0:SubGroupBB>
<ns0:SubGroupBB>
<ns0:MiscInfoBB1>BB1_1B</ns0:MiscInfoBB1>
<ns0:MiscInfoBB2>BB2_1B</ns0:MiscInfoBB2>
</ns0:SubGroupBB>
</ns0:SubGroupBBContainer>
</ns0:GroupB>
<ns0:GroupCContainer>
<ns0:GroupC>
<ns0:GroupCInstanceID>GroupCInstanceID_1A</ns0:GroupCInstanceID>
<ns0:MiscInfoC1>C1_1A</ns0:MiscInfoC1>
<ns0:MiscInfoC2>C2_1A</ns0:MiscInfoC2>
</ns0:GroupC>
<ns0:GroupC>
<ns0:GroupCInstanceID>GroupCInstanceID_1B</ns0:GroupCInstanceID>
<ns0:MiscInfoC1>C1_1B</ns0:MiscInfoC1>
<ns0:MiscInfoC2>C2_1B</ns0:MiscInfoC2>
</ns0:GroupC>
</ns0:GroupCContainer>
<ns0:GroupDContainer>
<ns0:GroupD>
<ns0:GroupDInstanceID>GroupDInstanceID_1A</ns0:GroupDInstanceID>
<ns0:MiscInfoD1>D1_1A</ns0:MiscInfoD1>
<ns0:MiscInfoD2>D2_1A</ns0:MiscInfoD2>
<ns0:SubGroupDA>
<ns0:MiscInfoDA1>DA1_1A</ns0:MiscInfoDA1>
<ns0:MiscInfoDA2>DA2_1A</ns0:MiscInfoDA2>
</ns0:SubGroupDA>
<ns0:SubGroupDBContainer>
<ns0:SubGroupDB>
<ns0:MiscInfoDB1>DB1_1A</ns0:MiscInfoDB1>
<ns0:MiscInfoDB2>DB2_1A</ns0:MiscInfoDB2>
</ns0:SubGroupDB>
</ns0:SubGroupDBContainer>
</ns0:GroupD>
<ns0:GroupD>
<ns0:GroupDInstanceID>GroupDInstanceID_1B</ns0:GroupDInstanceID>
<ns0:MiscInfoD1>D1_1B</ns0:MiscInfoD1>
<ns0:MiscInfoD2>D2_1B</ns0:MiscInfoD2>
<ns0:SubGroupDA>
<ns0:MiscInfoDA1>DA1_1B</ns0:MiscInfoDA1>
<ns0:MiscInfoDA2>DA2_1B</ns0:MiscInfoDA2>
</ns0:SubGroupDA>
<ns0:SubGroupDBContainer>
<ns0:SubGroupDB>
<ns0:MiscInfoDB1>DB1_1B</ns0:MiscInfoDB1>
<ns0:MiscInfoDB2>DB2_1B</ns0:MiscInfoDB2>
</ns0:SubGroupDB>
</ns0:SubGroupDBContainer>
</ns0:GroupD>
</ns0:GroupDContainer>
</ns0:SingleRecord>
<ns0:SingleRecord>
<ns0:GroupA>
<ns0:SharedID>SharedID_2</ns0:SharedID>
<ns0:MiscInfoA1>A1_2</ns0:MiscInfoA1>
<ns0:MiscInfoA2>A2_2</ns0:MiscInfoA2>
</ns0:GroupA>
<ns0:GroupB>
<ns0:MiscInfoB1>B1_2</ns0:MiscInfoB1>
<ns0:MiscInfoB2>B2_2</ns0:MiscInfoB2>
<ns0:SubGroupBAContainer>
<ns0:SubGroupBA>
<ns0:MiscInfoBA1>BA1_2A</ns0:MiscInfoBA1>
<ns0:MiscInfoBA2>BA2_2A</ns0:MiscInfoBA2>
</ns0:SubGroupBA>
<ns0:SubGroupBA>
<ns0:MiscInfoBA1>BA1_2B</ns0:MiscInfoBA1>
<ns0:MiscInfoBA2>BA2_2B</ns0:MiscInfoBA2>
</ns0:SubGroupBA>
</ns0:SubGroupBAContainer>
<ns0:SubGroupBBContainer>
<ns0:SubGroupBB>
<ns0:MiscInfoBB1>BB1_2</ns0:MiscInfoBB1>
<ns0:MiscInfoBB2>BB2_2</ns0:MiscInfoBB2>
</ns0:SubGroupBB>
</ns0:SubGroupBBContainer>
</ns0:GroupB>
<ns0:GroupCContainer>
<ns0:GroupC>
<ns0:GroupCInstanceID>GroupCInstanceID_2</ns0:GroupCInstanceID>
<ns0:MiscInfoC1>C1_2</ns0:MiscInfoC1>
<ns0:MiscInfoC2>C2_2</ns0:MiscInfoC2>
</ns0:GroupC>
</ns0:GroupCContainer>
<ns0:GroupDContainer>
<ns0:GroupD>
<ns0:GroupDInstanceID>GroupDInstanceID_2</ns0:GroupDInstanceID>
<ns0:MiscInfoD1>D1_2</ns0:MiscInfoD1>
<ns0:MiscInfoD2>D2_2</ns0:MiscInfoD2>
<ns0:SubGroupDA>
<ns0:MiscInfoDA1>DA1_2</ns0:MiscInfoDA1>
<ns0:MiscInfoDA2>DA2_2</ns0:MiscInfoDA2>
</ns0:SubGroupDA>
<ns0:SubGroupDBContainer>
<ns0:SubGroupDB>
<ns0:MiscInfoDB1>DB1_2</ns0:MiscInfoDB1>
<ns0:MiscInfoDB2>DB2_2</ns0:MiscInfoDB2>
</ns0:SubGroupDB>
</ns0:SubGroupDBContainer>
</ns0:GroupD>
</ns0:GroupDContainer>
</ns0:SingleRecord>
</ns0:AllRecords>
Без выборочной полезной нагрузки людям трудно воспроизводить. Можете ли вы добавить это? Также поможет подсветка того, что соответствует текущему результату, и тому, что вы хотите. – Dijkgraaf
Вы попробовали запрос FOR XML? В этом случае SQL Server будет заботиться обо всех группировках для вас. –
На самом деле, очень важно, это может быть * не * быть моевским случаем. Является ли SharedID в TypedPollingResultSet0 уникальным для каждого набора результатов? Если это так, это не дело Muenchian и становится намного проще. –