xsltサンプル:xsl output:CSVに出力
xsltサンプル:xsl:output:CSVに出力 †
xsltでCSVに出力するサンプルです。
他のサンプルと同じく、xsltにかける対象はこのサイトのrssです。
CSVで出力する場合、「xslt:output」をこんな感じで指定します。
<xsl:output method="text" encoding="UTF-8" />
サンプルは以下の通りです。
<?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:output method="text" encoding="UTF-8" /> <xsl:template match="/"> <xsl:for-each select="/rdf:RDF/rss:item"> <xsl:value-of select="rss:title/text()" />,<xsl:value-of select="dc:date/text()" /> <xsl:text> </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet>
注意するポイントは
<xsl:text> </xsl:text>
です。これが無いと改行が入らないため、1行でずらーっと出力されてしまいますw
xsl:outputに指定できる属性 †
outputで指定できる属性は以下の通り。※「たのしいXML」さんより転載です。
■ method=("xml" | "html" | "text" | QNAME)
結果ツリーの出力形式を指定します。
■ version=バージョン番号(任意)
method属性に"xml"か"html"を指定した場合に、該当するバージョン番号を指定します。versionを指定しなかった場合には、次のようにデフォルト値が設定されます。
■ encoding=文字エンコーディング名(任意)
出力されるファイルの文字エンコーディング名を指定します。"UTF-8"、"UTF-16"が指定可能です。XSLTプロセッサによっては、"Shift_JIS"なども可能です。
■ omit-xml-declaration=("yes" | "no")(任意)
method属性指定を"xml"とした場合に有効な属性です。"yes"の場合は、XML宣言を出力しないことを示します。
■ standalone=("yes" | "no")(任意)
method属性指定を"xml"とした場合に有効な属性です。"yes"の場合は、XML宣言に、standalone="yes"が出力されます。"no"の場合には、XML宣言に、standalone="no"が出力されます。
■ doctype-public=公開識別子(任意)
DOCTYPE宣言の公開識別子を指定します。
■ doctype-system=SYSTEM識別子(任意)
DOCTYPE宣言のSYSTEM識別子を指定します。
■ cdata-section-elements=要素名リスト(任意)
method属性指定を"xml"とした場合に有効な属性です。子ノードとしてのテキストノードをCDATAセクションとして出力したい場合、その要素名を指定します。そのような要素が複数ある場合には、要素名を空白で区切って記述します。
■ indent=("yes" | "no")(任意)
"yes"を指定した場合、出力結果ファイルにインデントのための適当な空白が挿入されます。どのように空白が挿入されるかはXSLTプロセッサ次第です。indent属性を指定しなかった場合や"no"を指定した場合、インデントのための空白は挿入されません。
■ media-type=文字列(任意)
出力されるファイルのメディアタイプを指定します。指定しなかった場合、次のようにデフォルト値が設定されます。
method属性指定 media-type属性のデフォルト値
"xml" "text/xml"
"html" "text/html"
"text" "text/plain"
色々あるけど、CSVに出力する場合は、「method」と「encoding」くらい指定していればOKです。