XSLT - вложенный foreach Excel не выводит - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь извлечь некоторые значения и динамически отобразить массив массивов в Excel. Тем не менее, мой вложенный для каждого не делает, и я не получаю вывод, независимо от того, что я пытаюсь. Я, конечно, пропустил некоторые вещи в sheet и data, поэтому сейчас они кажутся ненужными, но это не так.

XML :

<report>
  <sheet>
    <data>
      <table>
        <row>
          <column value="Germany" />
          <column value="Berlin" />
          <column value="2321341" />
        </row>
        <row>
          <column value="USA" />
          <column value="Washington DC" />
          <column value="11111" />
        </row>
      </table>
    </data>
  </sheet>
</report>

XSL вложен для каждого, которого я пытаюсь заставить работать. Это работает, когда я удаляю внутреннее значение for-each и пытаюсь отобразить первое значение, выполнив <xsl:value-of select="column/@value">, поэтому создает две новые строки, каждая из которых содержит название страны (которая является первым элементом списка столбцов).

<xsl:for-each select="report/sheet/data/table/row">
<ss:Row>
    <xsl:for-each select="row/columm">
    <ss:Cell>
        <ss:Data ss:Type="String">
        <xsl:value-of select="@value" />
        </ss:Data>
    </ss:Cell>
    </xsl:for-each>
</ss:Row>
</xsl:for-each>

1 Ответ

0 голосов
/ 01 мая 2020

Во-первых, у вас есть опечатка в:

<xsl:for-each select="row/columm">

Имя элемента: column, а не columm.


Что более важно, инструкция:

<xsl:for-each select="report/sheet/data/table/row">

ставит вас в контекст row. Из этого контекста

<xsl:for-each select="row/column">

ничего не выбирает, потому что row не является его дочерним элементом. Это должно быть:

<xsl:for-each select="column">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...