如何在xsl表中的某个位置放置值?

时间:2017-11-05 17:17:25

标签: php xml xslt

我有两个xml文件,一个是货币,另一个是国家。

country.xml示例:

<root>
    <row>
       <CountryName>Denmark</CountryName>
       <CountryCode>DNK</CountryCode>
       <Year>2016</Year>
       <Value>5731118</Value>
    </row>
    <row>
       Another country...
    </row>
</root>

currency.xml示例:

<valuta>
    <overskrift>Valutaliste</overskrift>
    <oppdatert>30.10.2017 09:00</oppdatert>
    <timestamp>2017-10-30-09.18.29.485970</timestamp>
    <valutakurs>
         <land>USA</land>
         <isokode>US</isokode>
         <kode>USD</kode>
         <enhet>1</enhet>
         <navn>Dollar</navn>
     </valutakurs>
     <valutakurs>
         Another currency...
     </valutakurs>
</valuta>

我已将来自my currency.xml的<kode></kode>的每一行与country.xml合并,所以现在我在一个xml文件中得到了我需要的所有内容。

所以我想知道我是否可以将DKK放在与丹麦仅使用xsl相同的行中?

或者我可以用php做这个并将它们合并到正确的位置开始吗?

这是我到目前为止所得到的。:

This is what I got so far.

我想要的是用这些货币填写此表,但它们必须位于正确的位置。

编辑:

XSL文件:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name = "year-search" match = "row" use = "Year"/>

<xsl:variable name="landkoder">NOR,SWE,DNK,FRO,FIN,ISL,GRL</xsl:variable>

<xsl:template match="/">
  <html>
  <body>
    <h2>Nordic Countries</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Country</th>
        <!--<th>Country Code</th>
        <th>Year</th>-->
        <th>Population</th>
        <th>Currency</th>
      </tr>
      <xsl:for-each select = "key('year-search', '2016')">
      <xsl:if test="contains($landkoder, CountryCode)">
        <tr>
          <td><xsl:value-of select="CountryName"/></td>
          <!--<td><xsl:value-of select="CountryCode"/></td>
          <td><xsl:value-of select="Year"/></td>-->
          <td><xsl:value-of select="Value"/></td>
        </tr>
        </xsl:if>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

Result(Sorry for Norwegian names on countries :P)

1 个答案:

答案 0 :(得分:0)

定义全局变量或参数<xsl:param name="currency-codes" select="document('currencies.xml')/valuta/valutakurs"/>,然后在for-each内使用,例如<xsl:value-of select="$currency-codes[land = current()/CountryName]/kode/>您想要输出相关的货币代码。我希望我已经很好地阅读了输入结构,并且必须在landCountryName之间进行比较。