XSL для отображения родителя в виде столбцов с соответствующими дочерними элементами в виде строк

Я новичок в XML и XSL. Я пытаюсь взять строки XML, сгенерированные нашим программным обеспечением, и перевести их в формат Excel. XML может иметь повторяющиеся строки, каждый из которых имеет несколько связанных дочерних полей. Дочерние поля всегда будут одинаковыми от строки к строке и в том же порядке, но могут отличаться в разных XML-файлах. Количество строк будет меняться от файла к файлу.

У меня есть ощущение, что здесь есть «для каждого», может быть, вложенное или использующее реляционные позиции, но у меня возникают проблемы, когда я оборачиваюсь вокруг функций запросов. Я просмотрел много образцов, но каждое решение было адаптировано к этому вопросу, и я не нашел такого, где желаемый результат был бы таким же, как у меня.

Мы будем благодарны за любую помощь или, по крайней мере, толчок в правильном направлении.

Спасибо!

Пример XML:

<?xml version="1.0" standalone="yes" ?>
<RpcData SrcNm="SnapshotBuckets" SrcTyp="DIR" ClientID="000" LoanNo="0000000000" Borrower="" RsltCd="0">
  <RepeatingFieldSet Nm="Hazard" Type="All Data" Count="3">
    <Row Index="1">
      <Fld Nm="Type">A</Fld>
      <Fld Nm="AgentCode">TESTAP</Fld>
      <Fld Nm="Agent City">ANYTOWN</Fld>
      <Fld Nm="Agent Desc Line 1">APPLE</Fld>
      <Fld Nm="Agent Desc Line 2">PICKERS</Fld>
      <Fld Nm="Agent Desc Line 3">123 MAIN ST</Fld>
      <Fld Nm="Agent Phone">(718) 555-1212</Fld>
      <Fld Nm="Agent State">AL</Fld>
      <Fld Nm="Agent ZIP Code">00001</Fld>
    </Row>
    <Row Index="2">
      <Fld Nm="Type">B</Fld>
      <Fld Nm="AgentCode">TESTBA</Fld>
      <Fld Nm="Agent City">ANYTOWN</Fld>
      <Fld Nm="Agent Desc Line 1">BANANA</Fld>
      <Fld Nm="Agent Desc Line 2">BUNCHERS</Fld>
      <Fld Nm="Agent Desc Line 3">456 MAIN ST</Fld>
      <Fld Nm="Agent Phone">(718) 555-1213</Fld>
      <Fld Nm="Agent State">AK</Fld>
      <Fld Nm="Agent ZIP Code">00002</Fld>
    </Row>
    <Row Index="3">
      <Fld Nm="Type">C</Fld>
      <Fld Nm="AgentCode">TESTCH</Fld>
      <Fld Nm="Agent City">ANYTOWN</Fld>
      <Fld Nm="Agent Desc Line 1">CHERRY</Fld>
      <Fld Nm="Agent Desc Line 2">PITTERS</Fld>
      <Fld Nm="Agent Desc Line 3">789 MAIN ST</Fld>
      <Fld Nm="Agent Phone">(718) 555-1214</Fld>
      <Fld Nm="Agent State">CA</Fld>
      <Fld Nm="Agent ZIP Code">00003</Fld>
    </Row>
  </RepeatingFieldSet>
</RpcData>

Желаемый результат:

Field                   1               2               3
Type                    A               B               C
AgentCode               TESTAP          TESTBA          TESTCH
Agent City              ANYTOWN         ANYTOWN         ANYTOWN
Agent Desc Line 1       APPLE           BANANA          CHERRY
Agent Desc Line 2       PICKERS         BUNCHERS        PITTERS
Agent Desc Line 3       123 MAIN ST     456 MAIN ST     789 MAIN ST
Agent Phone             (718) 555-1212  (718) 555-1213  (718) 555-1214
Agent State             AL              AK              CA
Agent ZIP Code          00001           00002           00003

XSL пока что:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:x="urn:schemas-microsoft-com:office:excel">
    <xsl:template match="/">
        <xsl:processing-instruction name="mso-application"><xsl:text>progid="Excel.Sheet"</xsl:text></xsl:processing-instruction>
        <Workbook>
            <Worksheet ss:Name="Sheet1">
                <Table>
                    <Row>
                        <Cell>Business Name</Cell>
                        <xsl:for-each select="RpcData/RepeatingFieldSet/Row">
                            <Cell>
                                <xsl:value-of select="@Index"/>
                            </Cell>
                        </xsl:for-each>
                    </Row>
                    <xsl:for-each select="RpcData/RepeatingFieldSet/*/Fld">
                        <Row>
                            <Cell>
                                <xsl:value-of select="@Nm"/>
                            </Cell>
                            <xsl:for-each select="*">
                                <Cell>
                                    <xsl:value-of select="."/>
                                </Cell>
                            </xsl:for-each>
                        </Row>
                    </xsl:for-each>
                </Table>
            </Worksheet>
        </Workbook>
   </xsl:template>      
</xsl:stylesheet>

Ответы на вопрос(1)

Ваш ответ на вопрос