XMLをIEで表示(基礎編-2) document

2001年2月12日(月)更新


documentで他のXMLテキストを参照

さらら: ねぇねぇ。これまでは一つのXMLテキストファイルに一つのXSLテキストファイルを対応させているものだったわね。JavaScriptで複数のXMLテキストファイルを扱うサンプルは見せてもらったけど、XSLだけでいくつかのXMLテキストを参照することってできるの?

たけち: うん、できるよ。documentというキーワードを使って別のXMLテキストファイルを読み込むことができるんだよ。

さらら: あっ、できるのね。で、documentってどう使うのかしら。。。

たけち:

documentで他のXMLテキストを参照

さらら: document('volume1.xml')//poemって書いて、volume1.xmlテキストファイルのpoemタグのところを指定しているのね。

たけち: そうそう。で、他の部分はいままでのサンプルと同じように書けばいいんだ。

さらら: そうなんだぁ。volume1.xmlテキストファイルの内容もこれまでといっしょなの?

たけち: あっ、微妙に違うからそれぞれのテキストを次に載せておくね。

main.xmlテキスト

<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet type="text/xsl" href="doc-1.xsl"?>
<manyosyu>
<volume no="1">万葉集巻一</volume>
</manyosyu>

volume1.xmlテキスト

<?xml version="1.0" encoding="Shift_JIS"?>

<volume no="1">
<poem pno="8">
<mkana>熟田津尓 船乗世武登 月待者 潮毛可奈比沼 今者許藝乞菜</mkana>
<poet>額田王(ぬかたのおおきみ)</poet>
<yomi>
熟田津(にきたつ)に、船(ふな)乗りせむと、月待てば、潮もかなひぬ、今は漕(こ)ぎ出(い)でな
</yomi>
<image>image/m0008.jpg</image>
<mean>熟田津(にきたつ)で、船を出そうと月を待っていると、いよいよ潮の流れも良くなってきた。
さあ、いまこそ船出するのです。
</mean>
</poem>

<poem pno="20">
<mkana>茜草指 武良前野逝 標野行 野守者不見哉 君之袖布流</mkana>
<poet>額田王(ぬかたのおおきみ)</poet>
<yomi>
茜(あかね)さす、紫野行き標野(しめの)行き、野守(のもり)は見ずや、君が袖振る
</yomi>
<image>image/m0020.jpg</image>
<mean>(茜色の光に満ちている)紫野、天智天皇御領地の野で、あぁ、あなたはそんなに袖を振ってらして、野守が見るかもしれませんよ。
</mean>
</poem>

-------- 途中省略 ....... (^ ^;

</volume>

doc-1.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>
  <head>
  <title>たのしいXML: XSL基本サンプル-8</title>
  <link rel="stylesheet" type="text/css" href="manyo.css" />
  </head>

  <body>
  <p align="center">万葉集: 他のXMLファイルの読み込み</p>

  <xsl:apply-templates />

  </body>
  </html>
</xsl:template>

<xsl:template match="manyosyu">

<h3 align="center"><xsl:value-of select="volume" /></h3>

<xsl:for-each select="document('volume1.xml')//poem">
<table border="0" width="500" align="center">
  <tr>
  <th><xsl:value-of select="poet" /></th>
  <th>歌番号: <xsl:value-of select="@pno" /></th>
  </tr>
  <tr>
  <td><xsl:value-of select="yomi" /></td>
  <td>
  <img>
    <xsl:attribute name="src">
    <xsl:value-of select="image" />
    </xsl:attribute>
    </img>
  </td>
  </tr>
</table>
</xsl:for-each>

</xsl:template>

</xsl:stylesheet>

たけち: じゃあ、このXSLテキストを"doc-1.xsl"というファイルにして、実際にどうなるか見てみようね。次のテキストをクリックしてみて。

万葉集第1巻抜粋のXMLファイル main.xml(上記説明のXML/XSL適用)

結果はこれまでのものと変わりませんが・・・

さらら: 今回のサンプルは、"volume1.xml"の一つだけだったけど、もっとたくさんのxmlテキストファイルを参照することもできるのよね、そうでしょ。

たけち: そうそう、そのサンプルは機会があったらやってみようね。じゃぁ、今回はこれでおしまい。

さらら: うん。ありがと。 (*^ ^*)

→次はgenerate-id関数です。 (^ ^;