document() 関数を使用すると、属性の値を使用できます。
この小さな例は私にとってはうまくいきます:
xml 参照を含む Static.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="cartoon2html.xsl"?>
<xml xml="cartoons.xml"/>
実際の XML
<cartoons>
<cartoon name="Donald Duck" publisher="Walt Disney" />
<cartoon name="Mickey Mouse" publisher="Walt Disney" />
<cartoon name="Batman" publisher="DC Comics" />
<cartoon name="Superman" publisher="DC Comics" />
<cartoon name="Iron Man" publisher="Marvel Comics" />
<cartoon name="Spider-Man" publisher="Marvel Comics" />
</cartoons>
値を使用する XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="document" select="/xml/@xml" />
<xsl:variable name="cartoons" select="document($document)/cartoons" />
<xsl:template match="/">
<html>
<head>
<title>Cartoons</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>
<xsl:apply-templates select="$cartoons" />
</body>
</html>
</xsl:template>
<xsl:template match="cartoons">
<table>
<xsl:apply-templates />
</table>
</xsl:template>
<xsl:template match="cartoon">
<tr>
<td><xsl:value-of select="@name" /></td>
<td><xsl:value-of select="@publisher" /></td>
</tr>
</xsl:template>
</xsl:stylesheet>
サンプルの実行
xsltproc を使用してこれを実行できます。
Firefox ブラウザーで static.xml ファイルを開くこともできます。