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

xsltサンプル:namespace のバックアップの現在との差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*xsltサンプル [#z7a94f5d]
*xsltサンプル:namespace [#z7a94f5d]

xsltサンプルを徒然。

書かないと忘れる、、、

対象はこのサイトのrssです。
ちなみに、xsltにかける対象はこのサイトの[[rss:http://www.hiihah.info/index.php?cmd=rss&ver=1.0]]です。


**はまりどころ [#h901243f]

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

***namespace [#e3f38670]

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でのイメージ

&ref("xsltsample1.png");


*** 参考サイト [#t4398af6]

-http://www.ibm.com/developerworks/jp/xml/library/x-xsltmistakes/