Dreamweaver TechniqueJAVA Script サンプル | CSS sample | JAVA Applet sample | Flash Sample
HTML4.0 riference | DynamicHTMLXHTML | XML sample | XSLT sample | RIKO's ASP Trial

異なるテンプレートを適用する

■ インポート

このサンプルは、インポート(読み込み)したXSLファイル中のテンプレートルールをXMLファイルに摘要するものです。
まず呼び出し元となるXSLファイル中のルート直課に,xsl:import href="インポートしたいXSLファイルのURI"/>のように記述してXSLファイルを読み込みます。
次に、読み込んだXSLファイルのテンプレートルールを適用させたい位置に<xsl:apply-imports />を記述します。

■ XML

apply-imports.xml

■ XSL

apply-import1.xsl

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="apply-imports2.xsl"/>
<xsl:template match="/">
<html lang="ja">
<head>
<title>apply-imports1(読み込み元)</title>
<style type="text/css">
   th{width:80px;background:black;color:white;}
</style>
</head>
<body>
   <div><xsl:apply-imports /></div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

 

apply-import2.xsl

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html lang="ja">
<head>
<title>apply-imports2(読み込まれるXSL)</title>
<style type="text/css">
   table{width:400px;}
      th{width:80px;background:silver;color:black;}
td{background:gainsboro;}
</style>
</head>
<body>
   <div><xsl:apply-templates select="全体" /></div>
</body>
</html>
</xsl:template>

<xsl:template match="全体">
   <xsl:for-each select="情報">
      <table>
      <tr><th>氏名</th><td><xsl:value-of select="氏名" /></td></tr>
      <tr><th>ハンドル</th><td><xsl:value-of select="ハンドル" /></td></tr>
      <tr><th>住所</th><td><xsl:value-of select="住所" /></td></tr>
      <tr><th>勤務先</th><td><xsl:value-of select="勤務先" /></td></tr>
      </table>
   </xsl:for-each>
</xsl:template>
</xsl:stylesheet>


■ 注意

※ xsl:import要素はトップレベル要素なので、ルート直下に書きましょう。例えば、適用のコードよりも前に書けばよいだろうと、<head>〜</head>内に書いてしまうとエラーになります。

※ プロセッサがXSLコード走査の仮定で<xsl:apply-imports />を記述した位置をカレントノードとして読み込まれたテンプレートを処理するので、読み込むテンプレートルールのカレントノードが性格に特定できなければエラーになります。

<<<戻る

R HOUSE | RIKO's Trial Page | Shirley's Pettit Case | Shirley's i-box | Shirley's little box