XSLT

JSONP ならぬ HTMLP を Amazon XSLT で試してみた

Amazon Web Services では Style 引数に XSL ファイルの URL を指定することでレスポンスの XML を Amazon のサーバ側でパースできる。これを使って、JSONP 形式に返すサンプルが色々あった。でも単純に表示するだけなら innerHTML に HTML を流し込むだけの…

XSLT を用いて XML の属性名をもとにノード名を付け替える

マッピングが定義されたXMLを使って、itemノードのname属性値から対応するタグ名に変換する。 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="UTF-8"/> <xsl:variable name="convtable" select="document('mapping.xml')"/> </xsl:variable></xsl:output></xsl:stylesheet>

変換出力サンプル

sample.xsl をロードした XSLT で test.xml を変換して出力する。 load('test.xml'); $docxsl = new DOMDocument(); $docxsl->load('sample.xsl'); $xslt = new XsltProcessor(); $xslt->importStylesheet($docxsl); echo $xslt->transformToXML($doc…

文字列関数 substring

$valの先頭から4文字を出力する。 1文字目が 0 ではなく 1 のところがミソ。 <xsl:value-of select="substring($val, 1, 4)"/></xsl:value-of>

Excel の XML スプレッドシート形式を XSLT で一般的な XML に整形する

1行目を列名とする。 book → シート名 → row → 列名 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> </xsl:template></xsl:output></xsl:stylesheet>

Tips

XMLをまるごとコピー <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match="*"> <xsl:copy> <xsl:for-each select="@*"> <xsl:copy /> </xsl:for-each> <xsl:apply-templates/> </xsl:copy> </xsl:template></xsl:output></xsl:stylesheet>