Hiromichi Honda <raku@...> さん writes.
> ...また、
>
> <content>...</content>
>
> 内に、<br/>、<img/> 程度は入れられるように、img には width, height,align
> alt 属性程度は指定できるようにしたらどうでしょう。apply-templates でいけ
> ば割に簡単ですから。
ちょっと不親切かと思ったので、書いてみました。自由に使ってください。
ts_newsk.xml:
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet href="ts_newsk.xsl" type="text/xsl"?>
<ts_news>
<news>
<title>Linux開発者向け「Linux (for PlayStation 2) Release 1.0」全世界でリリース</title>
<source href="http://www.ps2linux.com/press.html">
株式会社ソニー・コンピュータエンタテインメント</source>
<date>2002/01/30</date>
<content>正式版リリース。さてそのパフォーマンスはβ版対比向上しているのか。
1500円でアップグレードできるので試してみるのが楽しみ。
手に入るのは4月だ。まだ先の話。
</content>
<relurl href="http://www.ps2linux.com/chenge.html"></relurl>
</news>
<news>
<title>TS Network/TSNET待望の開設</title>
<source href="http://homepage1.nifty.com/kazuf/">Kazuo Fujioka</source>
<date>2002/01/27</date>
<content><img src="kani.gif" align="right" width="32"/>2001/10/31から議論してきた
TS Network/<a href="https://rakunet.org/TSNET/">TSNET</a>がとうとう船出した。
インターネットの大海に漕ぎ出すには準備は十分とは言えないが、まずはスタート。<br/>
次はニュース自動収集システムの稼動が目標となる。皆様のご参加を期待しております。
よろしくお願いいたします。
</content>
<relurl href="http://www.mars.dti.ne.jp/%7Ekazuf/tsnetwork/">TS Network</relurl>
<relurl href="http://tsnet.32g.cx/">TSNET(高速ミラーサイト)</relurl>
</news>
</ts_news>
ts_newsk.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"/>
<xsl:template match="/">
<html>
<head>
<title>News on TS Network</title>
<link href="ts_news2.css" rel="stylesheet" type="text/css"/>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"/>
</head>
<body>
<div class="top">News on TS Network</div>
<p><i><b>Table of Contents</b></i></p>
<ul>
<xsl:for-each select="ts_news/news">
<li><a><xsl:attribute name="href">#<xsl:value-of select="generate-id()"/></xsl:attribute>
<xsl:value-of select="title"/></a><xsl:text> </xsl:text>[<xsl:value-of select="date"/>]
</li>
</xsl:for-each>
</ul>
<hr/>
<xsl:for-each select="ts_news/news">
<div class="title"><a><xsl:attribute name="name"><xsl:value-of
select="generate-id()"/></xsl:attribute>
<xsl:value-of select="title"/></a></div>
<div class="source">
<a><xsl:attribute name="href"><xsl:value-of
select="source/url"/></xsl:attribute>
<xsl:value-of select="source"/></a>
</div>
<div class="date"><xsl:value-of select="date"/></div>
<div class="content"><xsl:apply-templates select="content"/></div>
<div class="relurl">
<table border="0"><tr><td width="20" valign="top"><i>Links:</i></td><td>
<ol>
<xsl:for-each select="relurl">
<li><a><xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
<xsl:value-of select="."/><xsl:if test=".=''"><xsl:value-of select="@href"/></xsl:if>
</a></li>
</xsl:for-each>
</ol>
</td></tr></table>
</div>
</xsl:for-each>
</body>
</html>
</xsl:template>
<xsl:template match="a">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="@href"/>
</xsl:attribute>
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
<xsl:template match="img">
<xsl:element name="img">
<xsl:attribute name="src"><xsl:value-of select="@src"/></xsl:attribute>
<xsl:if test="@align">
<xsl:attribute name="align"><xsl:value-of select="@align"/></xsl:attribute>
</xsl:if>
<xsl:if test="@width">
<xsl:attribute name="width"><xsl:value-of select="@width"/></xsl:attribute>
</xsl:if>
<xsl:if test="@height">
<xsl:attribute name="height"><xsl:value-of select="@height"/></xsl:attribute>
</xsl:if>
<xsl:if test="@alt">
<xsl:attribute name="alt"><xsl:value-of select="@alt"/></xsl:attribute>
</xsl:if>
</xsl:element>
</xsl:template>
<xsl:template match="br"><br/></xsl:template>
</xsl:stylesheet>
あとは、サイト名を xml 文書の下あたりに書いておくと収集の際便利ですね。
ヘッダーも xsl の中でなく、xml 文書内に書けるようにすればよいかな。
--
本田博通(閑舎)
Hiromichi Honda <raku@...>