DEIM Forum 2013 B2-1 XML XSLT 305 8550 1-2 E-mail: s0911654@u.tsukuba.ac.jp, nszuki@slis.tsukuba.ac.jp XML XML XML XPath XSLT XML XSLT XSLT XML 1. XMLXSLT XML(Extensible Markup Language) Web XML ( XML 12) XML XPath(XML Path Language) [3] [2] [6] XSLT(XML Stylesheet Language Transformations) XML XSLT XML XSLT XSLT XML [1] XML XSLT XML XSLT XML XSLT XSLT XML XSLT XML XSLT XSLT [4]XSLT 1 XML 2 XML XSLT XSLT (top-down tree transducer) XSLT apply-templates XSLT XML DTD Ruby 2. XMLXSLT
Σ T Σ Σ a Σ n (t 1,, t n) a(t 1 t n) H Σ t, t 1, t 2, h, h 1, h 2, H Σ(Q)(T Σ(Q)) Q () () 4 (Q, Σ, q 0, R) [7]Q,Σ q 0 Q R (q, a) h q Q, a Σ, h H Σ(Q). q = q 0 h T Σ(Q) \ Q XSLT mode T r = (Q, Σ, q 0, R) q t T r q (t) R1: t = ϵ, T r q (t) := ϵ. R2: t = a(t 1 t n) (q, a) h R, T r q (t) p Q u T r p (t 1) T r p (t n). R3: (q, a) h R, T r p (t) := ϵ. T r t T r(t) T r q 0 (t) <xsl:template match="a" mode="p"> <x> <z/> </x> <xsl:template match="a" mode="q"> <z> <xsl:apply-templates mode="q" /> </z> <xsl:template match="b" mode="p"> <x> <xsl:apply-templates mode="p" /> <xsl:apply-templates mode="q" /> </x> <xsl:template match="b" mode="q"> <y> <xsl:apply-templates mode="p" /> </y> 3 XSLT.1 T r = (Q, Σ, p, R) Q = {p, q}, Σ = {a, b, x, y, z}, R = {(p, a) x(z), (q, a) z(q), (p, b) x(p q), (q, b) y(p)}. T r 3 XSLT., (p, a) x(z). 3. p mode a match 4 t 5 T r(t) XML XML t T Σ t F t = T Σ F i F t ( ) 1 t T Σ F t = {F 0, F 1, F 2, F 3 } t t 2 F 0 F i, F j F j w F i v F i XML 4 t 5 T r(t) t w F j F i. F i v w F j w. 2 F T S = {S 0, S 1, S 2, S 3} F 0 S 0 F 1 S 1 F 2 S 2 F 3 S 3, 1 1 F 0 S 0 F 0 site T regions, people &fragment1; &fragment3; ( 6) 2 S 0 S 1, S 2, S 3 S S S S (S S )
6 F 0 2 S 0 S 1 S 3. 3. 3. 1 XSLT F F ( ) F 4 a a 2 (p, a) x(z)(q, a) z(q) b F F r 1,, r n 1 S F. S r 1,, r n F. S n. 2 S S F, F. S S. 3 S F. S n 3. 2 2 XSLT Master-XSLT Slave-XSLT Master- XSLT. Slave-XSLT F. F F. F. Master-XSLT ( XSLT ) (13 ), Transform (5 ), (6 ) (7 ). Master-XSLT Input: T r = (Q, Σ, q 0, R) F. Output: T T Σ. 1 for each S do 2 T r S. 3 end 4 v F ; 5 F Transform(T r, F, v, q 0); 6 S i F i. F 1,, F k. 7 F F 1,, F k T. 8 T ;, Transform.. 4 21 F v T r 4 13 R2 21 R3 1 3 v F (v ) q S(v ) F (v ) v S(v ) F (v ) Procedure Transform Input: T r = (Q, Σ, q 0, R), F, F v,, q. Output: q F. 1 if v then 2 F (v ) q. 3 S(v ) q. 4 else if (q, v ) h R h then 5 Q {q q h } Q; 6 if v v 1,, v k then 7 for each q Q do 8 for each v v i {v 1,, v k } do 9 F i F v i ; 10 T i Transform(T r, F i, v i, q ); 11 end 12 h q T 1 T k.
13 end 14 else 15 for each q Q do 16 q ϵ; 17 end 18 end 19 F v h. 20 else 21 F v ϵ. 22 end 23 F ; Slave-XSLT Slave-XSLT S S F F (38 ). F q (9 ), q (). F v F (v) S(v) 12 15 Procedure Slave-XSLT Input: F. Output: 1 T r = (Q, Σ, q 0, R) 2 v r F ; 3 Modes {q (q, v r ) h R h}; 4 for each q Modes do 5 Thread start 6 T q Transform(T r, F, v r, q); 7 Thread end 8 end 9 p. 10 if T p = null then 11 T p. 12 for each F vdo 13 v q. 14 q S(v). 15 end 16 else 17 ϵ. 18 end 2 m f XML 7 m f XML 8 m 9 f 10 XML ( 7). 1 T r m S r, f S s Master-XSLT S r T r S(&fragment) = S s m p ( 8 m )Slave-XSLT S s T r f 2 (p, a) x(z) (q, a) z(q) f a Slave-XSLT 9 Master-XSLT m &fragment S(&fragment) p q S(&fragment) Slave-XSLT f ( 9) S r S r ( 10) 4. 4. 1 XSLT Ruby XMark [5] XML, XML XSLT XML XSLT, XML XSLT XSLT XMark f XML f 0.5 2.5 0.5 50MB 100MB 150MB 200MB
250MB 5 XML XML XML 2 site F 0 regions F 1 asia F 2 people F 3 XML 1 XSLT Sheet-1: mode XML 137. Sheet-2: 1 mode XML 68. Sheet-3: 2 mode XML 94. 4. 2 1 XMark f 5 XML 2 XML XML 3 4 XML sheet-1sheet-2sheet-3 5 XML sheet-1sheet-2sheet-3 6 (4) (5) 4. 3 4 DELL PowerEdge R310 CPUXeon X3430 2.4 GHz 4G OSCentOS 5.8(64bit) Ruby1.9.3p194 (x86 64-linux) 33 xsl:text XML 1 XML F 0 F 1 F 2 F 3 50MB 23MB 25MB 5.5MB 2.6MB 100MB 46MB 50MB 11MB 5.1MB 150MB 69MB 75MB 17MB 7.6MB 200MB 92MB 100MB 22MB 11MB 250MB 115MB 125MB 28MB 13MB 11 sheet-1 4. 4 11 12 13 4 5. XML XSLT XSLT 2 XSLT1.0 36 12 13 sheet-2 sheet-3
xsl:for-each xsl:for-each select XPath select= para para xsl:for-each [8] World Wide Web Consortium (W3C). XSL Transformations (XSLT) Version 2.0. (online), available from http://www.w3.org/tr/xslt20/, (accessed 2012-05-30). 2 XSLT 18 18 36 17 16 33 [1] Filip Zavoral and Jana Dvorakovam, Perfomance of XSLT processors on large data sets. Applications of Digital Information and Web Technologies, 2009. ICADIWT 09. Second International Conference. London, UK, 2009-10-02/08-23. 2009, p.110 115. [2] Gao Cong, Wenfei Fan, Anastasios Kementsietsidis, Jianzhong Li and Xianmin Liu, Partial Evaluation for Distributed XPath QueryProcessing and Beyond. ACM Transactions on Database Systems. 2012, Volume 37, Article No. 32. [3] Gao Cong,Wenfei Fan, and Anastasios, Distributed Query Evaluation with Performance Guarantees. SIGMOD 07 Proceedings of the 2007 ACM SIGMOD international conference on Management of data. NY, USA,p.509 520. [4] Kepser S, A simple proof for the Turing-completeness of XSLT and XQuery. Proceedings of the Extreme Markup Languages, 2004. [5] Schmidt A, Waas F, Kersten M, Carey M.J, Manolescu I, and Busse R, XMark: A benchmark for XML data managemet VLDB 02 Proceedings of the 28th international conferenceon Very Large Data Bases. Hong Kong, China, 2002 08 20/08?23. VLDB, 2002, p.974 985. [6] Serge Abiteboul, Georg Gottlob, and Marco Manna, Distributed XML design. PODS 09 Proceedings of the twenty-eighth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems.ny, USA,p.247 258. [7] Wim Martens, Frank Neven,Typechecking Top-Down Uniform Unranked Tree Transducers. Lecture Notes in Computer Science, 2002, Volume 2572/2002, p.64 78.