Создать несколько столбцов из значения XSL-Select "." - PullRequest
0 голосов
/ 30 января 2019

Это таблица XML

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="CD-Catalog-New.xsl"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <years>
      <year>1985</year>
      <year>1986</year>
      <year>1987</year>
    </years>
   </cd>
  <cd>
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <country>UK</country>
    <company>CBS Records</company>
    <price>9.90</price>
    <years>
      <year>1988</year>
      <year>1988</year>
    </years>
  </cd>

Это код XSL, который в настоящее время использует

  <xsl:for-each select="years">
    <td><xsl:value-of select="."/></td>
  </xsl:for-each>

Результирующие столбцы Результирующие столбцы

 Columns
 Year1            Year2     Year3
 1985 1986 1987 
 1988 1988 

Хотелось бы

 Columns
 Year1     Year2     Year3
 1985      1986      1987 
 1988      1988 

Должно быть легко, но нигде не нашел этот пример.Просто начинаю изучать XSL

1 Ответ

0 голосов
/ 30 января 2019

В вашем XML есть только один years элемент на cd, поэтому <xsl:for-each select="years"> выберет только этот единственный элемент.

Когда вы делаете xsl:value-of для элемента с несколькими потомками, он объединяет текстовое значение всех этих потомков, поэтому все годы вместе отображаются в одной ячейке.

Вы должны сделать это для индивидуального выбора дочерних year элементов.

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