xsltサンプル:namespace のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- xsltサンプル:namespace へ行く。
- 1 (2012-06-18 (月) 16:35:53)
- 2 (2012-06-18 (月) 16:37:55)
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?でのイメージ