根据XSL值选择“创建多个列”。

时间:2019-01-30 11:54:54

标签: xml xslt

这是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>

结果列 Resulting Columns

 Columns
 Year1            Year2     Year3
 1985 1986 1987 
 1988 1988 

想要

 Columns
 Year1     Year2     Year3
 1985      1986      1987 
 1988      1988 

应该很容易,但是在任何地方都找不到此示例。 刚开始学习XSL

1 个答案:

答案 0 :(得分:0)

在您的XML中,每个years只有一个cd元素,因此进行<xsl:for-each select="years">只会选择该单个元素。

在具有多个后代的元素上执行xsl:value-of时,它将把所有这些后代的文本值连接在一起,这就是为什么所有年份在一个单元格中一起显示的原因。

您应该执行此操作以分别选择子year元素。

<xsl:for-each select="years/year">