2016-05-18 6 views
0

XSLを使用して1つのHTMLファイルに変換する2つのXMLファイルがあります。2つのXMLファイルをXSLを使用して変換しながら変換する

Linux端末でxsltproc first.xml transform.xsl > output.htmlコマンドを使用して変換します。 first.xmlの値は完全に機能し、HTMLに変換されますが、私はsecond.xmlも同様に動作させることはできません。それは単にファイルに表示されませんでした。私はStackOverflowでこのような質問があることを知っていますが、私はまだ間違っていることを理解できませんでした。 match = "document('effects.xml')/effects"で何かが間違っているようですが、私は正確に何がわかりません。

first.xml

<elements> 
    <listOfElements> 
    <element> 
     *some data* 
    </element> 
    <element> 
     *some data* 
    </element> 
    </listOfElements> 
</elements> 

second.xml

<effects> 
    <effect> 
    <name> NAME1 </name> 
    <cost> COST1 </cost> 
    </effect> 
    <effect> 
    <name> NAME2 </name> 
    <cost> COST2 </cost> 
    </effect> 
    <effect> 
    <name> NAME3 </name> 
    <cost> COST3 </cost> 
    </effect> 
</effect> 

transform.xsl

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output indent="yes"/> 

<xsl:template match="/"> 
<xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html&gt;</xsl:text> 
<html> 
    <head> 
    <meta charset="UTF-8"/> 
    <link rel="stylesheet" type="text/css" href="styl.css"/> 
    </head> 
    <body> 
    <xsl:apply-templates select="elements"/> 
    <xsl:apply-templates select="effects"/> 
    </body> 
</html> 
</xsl:template> 

<xsl:template match="elements"> 
<div> 
    THIS WORKS 
</div> 
</xsl:template> 

<xsl:template match="document('effects.xml')/effects"> 
<div> 
    <xsl:for-each select="effects/effect"> 
    <div> 
     <p><xsl:value-of select="name"/></p> 
    </div> 
    </xsl:for-each> 
</div> 
</xsl:template> 

答えて

1

使用<xsl:apply-templates select="document('effects.xml')/effects"/>であり、match="effects"および<xsl:for-each select="effect">である。

関連する問題