<?xml version="1.0" encoding="UTF-8"?>

<!-- 公開用 RSS の生成（前段階 RSS 中の特定要素の内容を要約化したり文字数を切り落としたり） -->

<xsl:stylesheet version="1.0" 
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns="http://purl.org/rss/1.0/"
	xmlns:h="http://www.w3.org/1999/xhtml"
	xmlns:s="http://www.remus.dti.ne.jp/~a-satomi/"
	xmlns:as="http://www.remus.dti.ne.jp/~a-satomi/asfunc"
	xmlns:rss="http://purl.org/rss/1.0/"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
	xmlns:xalan="http://xml.apache.org/xalan"
	exclude-result-prefixes="rss h s as xalan">

<!-- ================ 出力設定 ================  -->

<xsl:output method="xml"
	encoding="UTF-8"
	omit-xml-declaration="no"
	indent="yes"
	xalan:indent-amount="2"
	media-type="application/xml"/>

<!-- ================ 各種設定 ================  -->

<!-- RSS タイトル (channel/title) の最大文字数 (RSS0.9 との互換性を考慮する場合の推奨：40バイト以内) -->
<xsl:param name="rsstitle-max" select="40"/>

<!-- RSS 能書き文 (channel/description) の最大文字数 (RSS0.9 との互換性を考慮する場合の推奨：500バイト以内) -->
<xsl:param name="rssdesc-max" select="500"/>

<!-- アイテムタイトル (item/title) の最大文字数 (RSS0.9 との互換性を考慮する場合の推奨：100バイト以内) -->
<xsl:param name="itemtitle-max" select="100"/>

<!-- アイテム要約文 (item/description) の最大文字数 (RSS0.9 との互換性を考慮する場合の推奨：500バイト以内) -->
<xsl:param name="itemdesc-max" select="500"/>

<!-- ================ メインテンプレ ================  -->

<xsl:template match="/">
	<xsl:apply-templates/>
</xsl:template>

<xsl:template match="/rdf:RDF/rss:channel/rss:title">
	<title>
		<xsl:value-of select="as:cutText(string(self::node()), $rsstitle-max)"/>
	</title>
</xsl:template>

<xsl:template match="/rdf:RDF/rss:channel/rss:description">
	<description>
		<xsl:value-of select="as:cutText(string(self::node()), $rssdesc-max)"/>
	</description>
</xsl:template>

<xsl:template match="/rdf:RDF/rss:item/rss:title">
	<title>
		<xsl:value-of select="as:cutText(string(self::node()), $itemtitle-max)"/>
	</title>
</xsl:template>

<xsl:template match="/rdf:RDF/rss:item/rss:description">
	<description>
		<xsl:value-of select="as:summary(string(self::node()), $itemdesc-max)"/>
	</description>
</xsl:template>

<xsl:template match="@* | node()" priority="-5.0">
	<xsl:copy>
		<xsl:apply-templates select="@* | node()" />
	</xsl:copy>
</xsl:template>

</xsl:stylesheet>

