XSLT 2010-03-03
Upcoming SlideShare
Loading in...5
×
 

XSLT 2010-03-03

on

  • 529 views

2010年3月3日デベロッパ・カンファレンス資料。

2010年3月3日デベロッパ・カンファレンス資料。

Statistics

Views

Total Views
529
Views on SlideShare
529
Embed Views
0

Actions

Likes
0
Downloads
3
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    XSLT 2010-03-03 XSLT 2010-03-03 Presentation Transcript

    • All About XSLT4D デベロッパカンファレンス 2010
    • All About XSLT• このセッションの内容 ‣ XSLTの概要 ‣ XSLTの利点 ‣ XSLTと4D ‣ XSLTの作成, 編集, 検証 ‣ XSLTの応用 Clichy/2010-02-03
    • XSLTの概要• XMLを他の標準テキスト形式に変換するための言語 XML XSL TEXT Clichy/2010-02-03
    • XSLTの概要• XMLを他の標準テキスト形式に変換するための言語 XML XSL HTML TEXT XML XSL Clichy/2010-02-03
    • XSLTの利点• XMLを変換するための標準の技術• XMLを解析, 再構成, 統計, 並び替え, グループ... ✦xPathは強力なクエリ言語• XMLのノードタイプすべてに対してアクセス... ✦コメントの出力OK=4D HTML TAGS ! Clichy/2010-02-03
    • XSLTの利点<region name="ヨーロッパ"> ヨーロッパ! <country name="イギリス"> イギリス! ! <language name="英語"> 英語! </country>! フランス <country name="フランス">! ! 仏語 <language name="仏語">! </country></region><region name="アフリカ"> アフリカ! <country name="カメルーン"> カメルーン! ! <language name="仏語" /> 仏語! ! <language name="英語" /> 英語! </country>! <country name="ガボン"> ガボン! ! <language name="仏語"> 仏語! </country></region> Clichy/2010-02-03
    • XSLTの利点<language name="英語"> 英語! <region name="ヨーロッパ"> ヨーロッパ! ! <country name="イギリス"/> イギリス! </region>! <region name="アフリカ"> アフリカ! ! <country name="カメルーン"/>! </region></language><language name="仏語"> 仏語! <region name="ヨーロッパ">! ! <country name="フランス"/> フランス! </region>! <region name="アフリカ">! ! <country name="ガボン"/> ガボン! ! <country name="カメルーン"/> カメルーン! </region></language> Clichy/2010-02-03
    • XSLTの利点<country name="イギリス" region="ヨーロッパ"> イギリス ヨーロッパ! ! <language name="英語"/></country><country name="ガボン" region="アフリカ"> ガボン アフリカ! ! <language name="仏語"/> 仏語</country><country name="カメルーン" region="アフリカ"> カメルーン! ! <language name="仏語"/>! ! <language name="英語"/></country><country name="フランス" region="ヨーロッパ"> フランス! ! <language name="仏語"/></country> Clichy/2010-02-03
    • サンプル
    • XSLTの概要
    • XSLTの概要• XML形式で記述するプログラム言語 ‣ 実行前にXML妥当性検証, 解析, コンパイル ‣ 要素はコマンド ‣ 属性は命名引数 ‣ 要素値は数が定まらない引数 Clichy/2010-02-03
    • XSLTの概要<xsl:template match=”/”><data> <xsl:for-each select=”//*[@id&gt;1]”> <month id=”{@id}”> <xsl:value-of select=”name($name)” /> </month> </xsl:for-each></data></xsl:template> Clichy/2010-02-03
    • XSLTの概要<xsl:template match=”/”><data> <xsl:for-each select=”//*[@id&gt;1]”> <month id=”{@id}”> <xsl:value-of select=”name($name)” /> </month> </xsl:for-each></data></xsl:template> コマンド Clichy/2010-02-03
    • XSLTの概要<xsl:template match=”/”><data> <xsl:for-each select=”//*[@id&gt;1]”> <month id=”{@id}”> <xsl:value-of select=”name($name)” /> </month> </xsl:for-each></data></xsl:template> リテラルな出力 Clichy/2010-02-03
    • XSLTの概要<xsl:template match=”/”><data> <xsl:for-each select=”//*[@id&gt;1]”> <month id=”{@id}”> <xsl:value-of select=”name($name)” /> </month> </xsl:for-each></data></xsl:template> xPath Clichy/2010-02-03
    • XSLTの概要<xsl:template match=”/”><data> <xsl:for-each select=”//*[@id&gt;1]”> <month id=”{@id}”> <xsl:value-of select=”name($name)” /> </month> </xsl:for-each></data></xsl:template> 関数 Clichy/2010-02-03
    • XSLTの概要<xsl:template match=”/”><data> <xsl:for-each select=”//*[@id&gt;1]”> <month id=”{@id}”> <xsl:value-of select=”name($name)” /> </month> </xsl:for-each></data></xsl:template> 変数/引数 Clichy/2010-02-03
    • XSLTと4D
    • XSLTと4D• APPLY XSLT TRANSFORMATION ‣ Apache xalan-c ‣ XSLT 1.0 ‣ BLOB; BLOB; BLOB ‣ path; path; path• SET XSLT PARAMETER ‣ “12345” ‣ “‘abc’” Clichy/2010-02-03
    • XSLTと4D• APPLY XSLT TRANSFORMATION ‣ Apache xalan-c ‣ XSLT 1.0 ‣ BLOB; BLOB; BLOB 一時ファイル必要なし ‣ path; path; path• SET XSLT PARAMETER ‣ “12345” ‣ “‘abc’” Clichy/2010-02-03
    • XSLTと4D• APPLY XSLT TRANSFORMATION ‣ Apache xalan-c ‣ XSLT 1.0 ‣ BLOB; BLOB; BLOB 一時ファイル必要なし ‣ path; path; path コンパイルをキープ• SET XSLT PARAMETERimport, include ‣ “12345” ‣ “‘abc’” document(‘’) Clichy/2010-02-03
    • XSLT+SVG
    • 微妙な関係!?DOM documentSAX BLOBXSLT PICTURE TEXT Clichy/2010-02-03
    • 微妙な関係!?DOMdocument BLOB PICTURE TEXTSAXXSLT Clichy/2010-02-03
    • 微妙な関係!?DOM SAX BLOBdocument PICTURE TEXTXSLT Clichy/2010-02-03
    • 微妙な関係!?DOMSAXXSLT PICTUREdocument TEXT BLOB Clichy/2010-02-03
    • 微妙な関係!? TEXT BLOB Regex DOM XSLT SVG (get) SVG animatable PICTURE documentSVG (own copy) SVG interactive SAX Clichy/2010-02-03
    • xPath
    • xPath • XMLコマンドはxPathサポートしている? ‣ DOM Create XML element 4DではElement[ElementNum]シンタックスを使用した添字によるXPath要素への ‣ DOM Find XML element アクセスも使用できます。例えば以下の構造があるとき: ‣ DOM    <RootElement> SET XML VALUE       <Elem1>          <Elem2>aaa</Elem2> • element[index]          <Elem2>bbb</Elem2>          <Elem2>ccc</Elem2> ‣ インデックスで要素が参照できるだけ。       </Elem1>    </RootElement> ‣ それ以外のxPathはNG。 XPath記法では /RootElement/Elem1/Elem2[3] シンタックスを使用して"ccc"値 にアクセスできます。http://www.4d.com/docs/CMJ/CMJ10099.HTM Clichy/2010-02-03
    • xPath• /preceding-sibling::* 軸• /element/@attribute 属性• /*/@* ワイルドカード• *[name()=‘table’ and @id=‘1’] プレディケート• *[matches(@uuid,(‘[0-9a-f]{32}’))] 正規表現 Clichy/2010-02-03
    • 1.0 xPath• /preceding-sibling::* 軸• /element/@attribute 属性• /*/@* ワイルドカード• *[name()=‘table’ and @id=‘1’] プレディケート• *[matches(@uuid,(‘[0-9a-f]{32}’))] 正規表現 Clichy/2010-02-03
    • XSLTリファレンス
    • コマンド Clichy/2010-02-03
    • コマンド 条件分岐<xsl:if test=”xPath”> ...some code here</xsl:if> Clichy/2010-02-03
    • コマンド 条件分岐<xsl:choose> <xsl:when test=”xPath”> ...some code here </xsl:when> <xsl:when test=”xPath”> ...some code here </xsl:when> <xsl:otherwise> ...some code here </xsl:otherwise></xsl:choose> Clichy/2010-02-03
    • コマンド クエリ, 並び替え<xsl:for-each select=”xPath” > <xsl:for-each select=”xPath” > <xsl:sort select=”xPath” /> <xsl:sort select=”xPath” /> ...some code here </xsl:for-each></xsl:for-each> Clichy/2010-02-03
    • コマンド クエリ, 一括更新<xsl:apply-templates select=”xPath” > <xsl:with-param name=”” select=”xPath” /> <xsl:sort select=”xPath” /> <xsl:sort select=”xPath” /></xsl:apply-templates><xsl:template match=”xPath” > <xsl:param name=”” select=”xPath” /> ...some code here</xsl:template> Clichy/2010-02-03
    • コマンド サブルーチン<xsl:call-templates name=”” > <xsl:with-param name=”” select=”xPath” /></xsl:apply-templates><xsl:template name=”” > <xsl:param name=”” select=”xPath” /> ...some code here</xsl:template> Clichy/2010-02-03
    • コマンド 出力<xsl:value-of select=”xPath” /> Clichy/2010-02-03
    • コマンド 出力<xsl:text>...literal value here</xsl:text>or,here<tag></tag> Clichy/2010-02-03
    • コマンド 出力<xsl:number count=”xPath” format=””/>//context based value<xsl:number value=”” format=””/>//static value Clichy/2010-02-03
    • コマンド 設定<xsl:output method=”xml|text|html” />encodingstandaloneindentomit-xml-declarationdoctype-publicdoctype-systemmedia-type Clichy/2010-02-03
    • xPathリファレンス
    • 軸 (axis)<root> <trunk index=”1”> <branch name=”abc”> <trunk index=”2” /> <branch name=”4D” version=”11”> <leaf> <vein /> <leaf> </branch> </trunk> <trunk index=”3” /></root> Clichy/2010-02-03
    • 軸 (axis) self::*<root> <trunk index=”1”> <branch name=”abc”> <trunk index=”2” /> <branch name=”4D” version=”11”> <leaf> <vein /> <leaf> </branch> </trunk> <trunk index=”3” /></root> Clichy/2010-02-03
    • 軸 (axis) child::*<root> <trunk index=”1”> <branch name=”abc”> <trunk index=”2” /> <branch name=”4D” version=”11”> <leaf> <vein /> <leaf> </branch> </trunk> <trunk index=”3” /></root> Clichy/2010-02-03
    • 軸 (axis) parent::*<root> <trunk index=”1”> <branch name=”abc”> <trunk index=”2” /> <branch name=”4D” version=”11”> <leaf> <vein /> <leaf> </branch> </trunk> <trunk index=”3” /></root> Clichy/2010-02-03
    • 軸 (axis) attribute::*<root> <trunk index=”1”> <branch name=”abc”> <trunk index=”2” /> <branch name=”4D” version=”11”> <leaf> <vein /> <leaf> </branch> </trunk> <trunk index=”3” /></root> Clichy/2010-02-03
    • 軸 (axis) ancestor::*<root> <trunk index=”1”> <branch name=”abc”> <trunk index=”2” /> <branch name=”4D” version=”11”> <leaf> <vein /> <leaf> </branch> </trunk> <trunk index=”3” /></root> Clichy/2010-02-03
    • 軸 (axis) descendant::*<root> <trunk index=”1”> <branch name=”abc”> <trunk index=”2” /> <branch name=”4D” version=”11”> <leaf> <vein /> <leaf> </branch> </trunk> <trunk index=”3” /></root> Clichy/2010-02-03
    • 軸 (axis) preceding-sibling::*<root> <trunk index=”1”> <branch name=”abc”> <trunk index=”2” /> <branch name=”4D” version=”11”> <leaf> <vein /> <leaf> </branch> </trunk> <trunk index=”3” /></root> Clichy/2010-02-03
    • 軸 (axis) preceding::*<root> <trunk index=”1”> <branch name=”abc”> <trunk index=”2” /> <branch name=”4D” version=”11”> <leaf> <vein /> <leaf> </branch> </trunk> <trunk index=”3” /></root> Clichy/2010-02-03
    • 軸 (axis) following-sibling::*<root> <trunk index=”1”> <branch name=”abc”> <trunk index=”2” /> <branch name=”4D” version=”11”> <leaf> <vein /> <leaf> </branch> </trunk> <trunk index=”3” /></root> Clichy/2010-02-03
    • 軸 (axis) following::*<root> <trunk index=”1”> <branch name=”abc”> <trunk index=”2” /> <branch name=”4D” version=”11”> <leaf> <vein /> <leaf> </branch> </trunk> <trunk index=”3” /></root> Clichy/2010-02-03
    • 関数 Clichy/2010-02-03
    • 関数numeric: number, format- string: number node: sum xml: roundsettings: ceiling floor Clichy/2010-02-03
    • 関数numeric: string, name string: contains, starts-with node: concat xml: substringsettings: substring-before substring-after normalize space translate Clichy/2010-02-03
    • 関数numeric: position string: last node: document xml:settings: Clichy/2010-02-03
    • 関数numeric: namespace-uri string: unparsed-entity-uri node: xml:settings: Clichy/2010-02-03
    • 関数numeric: system-property string: function-available node: xml:settings: Clichy/2010-02-03
    • EXSLT 拡張関数 Clichy/2010-02-03
    • EXSLT 拡張関数 math: math:min, max str: math:lowest, highest set: math:tan, cos, sin dyn: math:atan, acos, asin date: math:random exsl: math:absrandom: math:power func: math:exp, log, sqrt regexp: math:constant Clichy/2010-02-03
    • EXSLT 拡張関数 math: str:encode-uri str: str:decode-uri set: str:padding dyn: str:concat date: str:align exsl:random: func: regexp: Clichy/2010-02-03
    • EXSLT 拡張関数 math: set:difference str: set:distinct set: set:has-same- dyn: node date: set:intersection exsl: set:leadingrandom: set:trainling func: regexp: Clichy/2010-02-03
    • EXSLT 拡張関数 math: dyn:evaluate str: set: dyn: date: exsl:random: func: regexp: Clichy/2010-02-03
    • EXSLT 拡張関数 math: date:date-time str: set: dyn: date: exsl:random: func: regexp: Clichy/2010-02-03
    • EXSLT 拡張関数 math: exsl:object-type str: exsl:node-set set: dyn: date: exsl:random: func: regexp: Clichy/2010-02-03
    • EXSLT 拡張関数 math: str: set: dyn: date: exsl:random: func: regexp: Clichy/2010-02-03
    • EXSLT 拡張関数 math: str: set: dyn: date: exsl:random: func: regexp: Clichy/2010-02-03
    • EXSLT 拡張関数 math: str: set: dyn: date: exsl:random: func: regexp: Clichy/2010-02-03
    • 4D 拡張関数exsl4D: exsl4D:format-number exsl4D:format-value exsl4D:max exsl4D:min exsl4D:max-string-length exsl4D:max-value-length Clichy/2010-02-03