1 / 17

XSLT

XSLT. 2002 年 7 月 5 日 上牧瀬 誠. XSLT とは. XML Stylesheet Language Transformation ある XML ドキュメントを別の XML ドキュメント, HTML ドキュメントなどに変換するための言語. XML ドキュメント. XML ドキュメント. XSLT. XSLT. HTML ドキュメント. XSLT スタイルシートの構造. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

fell
Download Presentation

XSLT

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XSLT 2002年7月5日 上牧瀬 誠

  2. XSLTとは • XML Stylesheet Language Transformation • あるXMLドキュメントを別のXMLドキュメント,HTMLドキュメントなどに変換するための言語 XML ドキュメント XML ドキュメント XSLT XSLT HTML ドキュメント

  3. XSLTスタイルシートの構造 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:stylesheet> • versionはxslのバージョンを指定する • xmlnsは名前空間を指定する この部分に変換のための規則を書く

  4. XMLの例(sample.xml) • サンプルとして次のXMLをHTMLに変換することを考える <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="sample.xsl"?> <team> <name>チームA</name> <member> <name>選手A</name> <number>1</number> <color>red</color> </member> <member> <name>選手B</name> <number>3</number> <color>blue</color> </member> <member> <name>選手C</name> <number>2</number> <color>green</color> </member> </team>

  5. xsl:template • テンプレートのルールを適用させる条件を指定する <xsl:template match=pattern> <!-- テンプレートの内容 --> </xsl:template> • 例 <xsl:template match="/"> • ルートノード以下にルールを適用させる • sample.xmlでは<team>がルートノードになる

  6. xsl:value-of • selectで指定された値に置き換える <xsl:value-of select=expression /> • 例 <xsl:value-of select="team/name" /> • team/nameの値に置き換える • sample.xmlでは,次のように表示される チームA

  7. xsl:attribute • タグの属性値を指定する <xsl:attribute name="属性名"> 属性値 </xsl:attribute> • 例 <font> <xsl:attribute name="color">red</xsl:attribute> <xsl:value-of select="team/name"/> </font> • <font>の属性colorにredを指定する • 次のように解釈される <font color="red">チームA</font> • sample.xmlでは,次のように赤い文字で表示される チームA

  8. xsl:variable • 変数を宣言する <xsl:variable name=qname select=expression/> • 例 <xsl:variable name="チーム名" select="/team/name"/> <xsl:value-of select="$チーム名"/> • sample.xmlでは, 次のように表示される チームA • 宣言した変数を使うときには,$変数名とする

  9. xsl:for-each • テンプレートのルールを,指定した各要素に対して適用する <xsl:for-each select=node-select-expression> <!-- 各要素に対して適用するテンプレートの内容 --> </xsl:for-each> • 例 <xsl:for-each select="team/member"> <xsl:value-of select="name"/><br/> </xsl:for-each> • team/memberのすべてに対して,nameを表示する • sample.xmlでは,次のように表示される 選手A 選手B 選手C

  10. xsl:if • 条件をテストし,テストした結果が真である場合,テンプレートのルールを要素に対して適用する <xsl:if test=boolean-expression> <!-- テンプレートの内容 --> </xsl:if> • 例 <xsl:for-each select="team/member"> <xsl:if test="number!=2"> <xsl:value-of select="name"/><br/> </xsl:if> </xsl:for-each> • sample.xmlでは,次のように表示される 選手A 選手B • 選手Cは,number!=2を満たさないので表示されない

  11. xsl:choose • 条件に応じた処理を行う <xsl:choose> <xsl:when test=boolean-expression> <!-- テストの結果が真であるときに適用するテンプレート --> </xsl:when> <xsl:otherwise> <!– どのテストの結果も真でないときに適用するテンプレート --> </xsl:otherwise> </xsl:choose>

  12. xsl:choose • 例 <xsl:for-each select="team/member"> <font> <xsl:attribute name="color"> <xsl:choose> <xsl:when test="number=1">red</xsl:when> <xsl:when test="number=2">blue</xsl:when> <xsl:otherwise>black</xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:value-of select="name"/><br/> </font> </xsl:for-each> • sample.xmlでは,次のように表示される 選手A 選手B 選手C

  13. xsl:sort • xsl:apply-templatesまたはxsl:for-eachの子要素として使い,次の形式で結果をソートする方法を指定する <xsl:sort select=string-expression lang={nmtoken} data-type={"text"|"nunber"|"qname-but-not-cname"} order={"ascending"|"descending"} case-order={"upper-first"|"lower-first"}/>

  14. xsl:sort • 例 <xsl:for-each select="team/member"> <xsl:sort select="number" data-type="number" order="ascending"/> <xsl:value-of select=“number”/>, <xsl:value-of select="name"/>< br/> </xsl:for-each> • sample.xmlでは,次のように表示される 1,選手A 2,選手C 3,選手B • team/member/numberで昇順にソートされ表示される

  15. XSLの例(sample.xsl) <?xml version="1.0" encoding="Shift-JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> </head> <body> <h1><xsl:value-of select="team/name"/></h1> <table border="1"> <tr> <td>選手名</td> <td>背番号</td> </tr>

  16. XSLの例(sample.xsl) <xsl:for-each select="team/member"> <xsl:sort select="number" data-type="number" order="ascending"/> <tr> <td> <font> <xsl:attribute name="color"><xsl:value-of select="color"/></xsl:attribute> <xsl:value-of select="name"/> </font> </td> <td> <xsl:variable name="背番号" select="number"/> <xsl:value-of select="$背番号"/> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

  17. 実行結果 • sample.xmlにsample.xslを適用した結果は,次のようにブラウザに表示される

More Related