2017-11-05 14 views
0

私は2つのxmlファイルを持っています.1つは通貨で、もう1つは国からです。 country.xmlのxslテーブルの特定の場所に値を配置するにはどうすればよいですか?

サンプル:currencies.xmlの

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

サンプル:

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

私は今私が得たcountry.xmlと私のcurrencies.xmlから<kode></kode>のすべての行を合併しています1つのxmlファイルで必要なものすべて。

だから私はデンマークと同じ列に例えばxslを使ってDKKを置くことができるのだろうかと思いましたか?

これをphpで行い、それらを適切な場所にマージして始めてもよろしいですか?

これは私がこれまでに得たものです。:

This is what I got so far.

私が欲しいものは、通貨で、このテーブルを満たすことであるが、彼らは正しい場所にする必要があります。

EDIT:

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)

答えて

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の間でなければなりません。

+0

ありがとう!私はヨーロッパのすべてを含むようにそれを拡大したい場合。フィンランドなど、ユーロを通貨として使用している国はどうですか? – Steffinho

+0

これは、主に2つの入力文書がどのように構造化され、どのデータが正確に含まれているかによって異なります。 –

+0

私のサンプルで示した以上のデータはありません。同じ構造を使用している国や通貨がもう少しです。問題ありません、私は今のところそれをスキップするつもりだと思います。結果と私の質問を編集し、ソリューションの受け入れをするつもりです。 :) – Steffinho

関連する問題