トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

xsltサンプル:namespace のバックアップ(No.2)


xsltサンプル

xsltサンプルを徒然。

書かないと忘れる、、、

ちなみに、xsltにかける対象はこのサイトのrssです。

はまりどころ

xslt使うときにいつもはまるところ

namespace

xslt1.0系はデフォルトネームスペースが効かない。

従って、rssも明示してxpathで指定する必要あり。

例えば、うちのサイトのRSSだと、namespaceは以下のものを使っている。※rssを取得した際にrdf:RDFの中で指定されているxmlnsを参照すること

  • rss(デフォルトネームスペース)
  • dc
  • rdf

これらはについて、xsltの宣言部で

  • namespaceを同様に宣言する必要あり。
  • デフォルトであるrssについては接頭辞をつけて宣言する必要あり。

すると、こんな感じになります。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"  
  xmlns:rss="http://purl.org/rss/1.0/"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<xsl:template match="/">

     <html>
     <p>xsltサンプル</p>
     <lu>
         <xsl:for-each select="/rdf:RDF/rss:item">
             <li><xsl:value-of select="rss:title/text()" /></li>
         </xsl:for-each>
     </lu>
     </html>

</xsl:template>
</xsl:stylesheet>

出力は以下の通り。※XmlNotePad?でのイメージ

xsltsample1.png

参考サイト