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'><!DOCTYPE html></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>