作者: Hiromichi Honda
日時: 2002/2/02(13:53)
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@...>