XMLよく使われているようだが、よく知らないので作りました。 XSLXSL(eXtensible Stylesheet Language)は、XMLに対してスタイルを記述します。その中にXSLT(eXtensible Stylesheet Language Transformations)があり、他言語に変換します。 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="books.xsl" ?> とすると、books.xslによって整形されて出力されます。例として、 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="books.xsl" ?> <books title="書籍"> <owner address="hoge@hoge.com">hidekazu</owner> <book isbn="111"> <name>あああ</name> <author>hoge</author> <category>java</category> <price>1000</price> <url>http://test.com</url> </book> <book isbn="222"> <name>いいい</name> <author>ttt</author> <category>ruby</category> <price>2000</price> <url>http://test2.com</url> </book> <book isbn="333"> <name>いいい</name> <author>ttt</author> <category>vb</category> <price>3000</price> <url>http://test3.com</url> </book> </books> というxmlがあり、スタイルシートはbooks.xslを使うので、 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" encoding="UTF-8" /> <xsl:template match="/"> <html> <head> <title><xsl:value-of select="books/@title" /></title> </head> <body> <h1> <xsl:value-of select="books/@title" /> </h1> <xsl:for-each select="/books/book"> <xsl:sort select="category" data-type="text" order="ascending" /> <xsl:value-of select="category" /> <xsl:element name="a"> <xsl:attribute name="href"> <xsl:value-of select="url" /> </xsl:attribute> <xsl:value-of select="author" /> </xsl:element> <xsl:choose> <xsl:when test="price[number(.) <= 2000]"> <b><xsl:value-of select="price" /></b>円 </xsl:when> <xsl:otherwise> <xsl:value-of select="price" />円 </xsl:otherwise> </xsl:choose> <br /> </xsl:for-each> <xsl:value-of select="books/owner" /> </body> </html> </xsl:template> </xsl:stylesheet> とすると、このxslに従って、xmlが整形されて出力されます。 xsl:output 形式と言語を決めます。 xsl:template match="/" xmlのどこを起点とするかを設定してます。 xsl:value-of select="books/@title" xmlの値を出力します。@は属性の場合です。 xsl:for-each 繰り返しです。 xsl:sort ソートができます。 xsl:element 要素を指定します。 xsl:attribute 属性を指定します。 xsl:choose 分岐です。case文 xsl:when test="price[number(.) <= 2000] testに結果を返して、条件が成立した場合に次が実行されます。numberは関数で数値化します。 TIPSリンク参考書籍コメント
|