- PR -

1つのxmlからXSLTを使って、複数のhtmlを出力する方法(ソース付き)

1
投稿者投稿内容
ゆか
ベテラン
会議室デビュー日: 2004/04/06
投稿数: 75
投稿日時: 2006-04-03 14:46
いつも勉強させていただいています。
1つのxmlからXSLTを使って、複数のhtmlを出力する方法を探しています。

入力.xmlを変換.xslで処理して、出力.htmlを出力しています。
出力.htmlから、3つのファイル(XSLT_Part1.html、XSLT_Part2.html、XSLT_Part3.html)へリンクしています。
この3ファイルを、自動的に出力する方法はありますでしょうか?
XSLT_Part[1-3].htmlファイルには、それぞれタイトルにXSLT_Part[1-3]を指定したいと思います。
作りたいサンプルは一番下に書いてあります。

●実行.bat
msxsl.exe 入力.xml 変換.xsl -o 出力.html

●入力.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<article>
<title>XSLT_Part1</title>
<title>XSLT_Part2</title>
<title>XSLT_Part3</title>
</article>

●変換.xsl
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="Shift_JIS"/>
<xsl:template match="/">
<HTML>
<BODY>
<xsl:apply-templates select="article/title" />
</BODY>
</HTML>
</xsl:template>

<xsl:template match="title">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="."/>.html
</xsl:attribute>
<xsl:value-of select="."/><br></br>
</xsl:element>
</xsl:template>
</xsl:stylesheet>

●出力.html - これはできている。
<HTML>
<BODY>
<a href="XSLT_Part1.html">XSLT_Part1<br></a>
<a href="XSLT_Part2.html">XSLT_Part2<br></a>
<a href="XSLT_Part3.html">XSLT_Part3<br></a>
</BODY>
</HTML>

●XSLT_Part1.html - これを作りたい。●
<HTML>
<title>XSLT_Part1.html</title>
<BODY>
<h1>XSLT_Part1.html</h1>
</BODY>
</HTML>
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2006-04-03 15:53
XSLT2.0 仕様には 複数出力があります
メジャーな XSLTプロセッサーは 2.0 の先行実装が入っています
XSLT2.0 は最終投票がせまっています

XSLT1.0 のプロセッサでも 裏技の使用で複数出力できるかもしれません

出力の種類ごとに、複数回処理するのが、単純です
========================
for-each で 複数HTMLを一本で出力して
後処理で 複数ファイルに分割するのが わかりやすい

[ メッセージ編集済み 編集者: MMX 編集日時 2006-04-04 11:13 ]
ゆか
ベテラン
会議室デビュー日: 2004/04/06
投稿数: 75
投稿日時: 2006-04-04 09:48
MMX様
レスありがとうございます。

具体的にどのようにすれば良いか、ご存知の方がいらっしゃいましたら
教えていただきたいのですが、いかがでしょうか?
ゆか
ベテラン
会議室デビュー日: 2004/04/06
投稿数: 75
投稿日時: 2006-04-11 11:27
やっぱり、出力する方法はないのでしょうか?
自分でいろいろ調べたのですが、どうも良い回答が得られません。
ご存知の方、よろしくお願いします。
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2006-04-11 11:39
気になったので検索してみました。下記の記事を参考にして応用すれば出来るような気がします(出来なかったらごめんなさい)。

ヒント: XSLT 2.0で複数ファイルを作る
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2006-04-11 11:42
3つのファイル(XSLT_Part1.html、XSLT_Part2.html、XSLT_Part3.html)
の名前の決定がbatでは大変な気がします。
内容自体はそれぞれのxslを作成するだけですから・・
ゆか
ベテラン
会議室デビュー日: 2004/04/06
投稿数: 75
投稿日時: 2006-04-11 14:33
みなさま、ありがとうございます。
まさに下記の例です。
かなり進んだ気がしております。
ただ、新たな疑問が出てきましたので別スレッドで聞いてみます。
本当にありがとうございました。

引用:

想馬さんの書き込み (2006-04-11 11:39) より:
気になったので検索してみました。下記の記事を参考にして応用すれば出来るような気がします(出来なかったらごめんなさい)。

ヒント: XSLT 2.0で複数ファイルを作る

1

スキルアップ/キャリアアップ(JOB@IT)