我有两个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做这个并将它们合并到正确的位置开始吗?
这是我到目前为止所得到的。:
我想要的是用这些货币填写此表,但它们必须位于正确的位置。
编辑:
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>
答案 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/>
您想要输出相关的货币代码。我希望我已经很好地阅读了输入结构,并且必须在land
和CountryName
之间进行比较。