6cc263e119714db94e65a273fa61de90173e00e0
[WebKit-https.git] / WebKitSite / projects / xslt / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
2 <html>
3 <head>
4   <meta content="text/html; charset=ISO-8859-1"
5  http-equiv="content-type">
6   <title>XSLT</title>
7   <link rel=stylesheet href="../../webkitdev.css">
8   <style>
9     dt { margin-top: 1em; }
10   </style>
11
12 </head>
13 <body>
14 <!--begin sidebar -->
15 <iframe id="sidebar" src="../../sidebar.html"></iframe>
16 <!--end sidebar -->
17
18 <div id="banner">
19 XSLT
20 </div>
21
22 <div id="content">
23 <h3>Overview</h3>
24
25 <p>Welcome to the project page for WebKit's XSLT implementation.  <a href="http://www.w3.org/Style/XSL/">XSLT</a> is a W3C standard for defining how to transform source XML
26 into a result document that can be examined using the DOM or displayed as a Web document.  Here is a <a href="http://www.mozilla.org/projects/xslt/test.xml">test file</a> that
27 demonstrates client-side XSLT in action.</p>
28
29 <p>WebKit uses the excellent <a href="http://xmlsoft.org/XSLT/">libxslt</a> library to do XSL
30 transformations.  Bugs in WebKit's XSLT support fall into two categories: either they are bugs in libxslt itself, or they are bugs in WebKit's glue
31 code that interacts with libxslt.  The following <a href="http://xmlsoft.org/XSLT/bugs.html">page at xmlsoft.org</a> has a list of helpful resources and
32 explains the process of bug reporting and getting help for bugs in libxslt.  Even if the bug is in libxslt, file a tracking bug in WebKit's XSLT component and paste in a link
33 to the corresponding libxslt bug.  That way we can track the issue and know that an update to the version of libxslt on the system may be necessary.</p>
34
35 <p>WebKit's implementation of XSLT can be found in the <tt>WebCore</tt> framework in the <tt>khtml/xsl</tt> subdirectory.  There are two classes of interest, 
36 <tt>XSLStyleSheetImpl</tt> and <tt>XSLTProcessorImpl</tt>.  The style sheet class shares a common base with CSS style sheets, and exists as an object-oriented expression
37 of the stylesheets that WebKit encounters when it parses the source XML file.  The processor wraps the code that actually performs the transformation.  It takes the stylesheets
38 and source XML and produces result text that is then fed back into WebKit for parsing as HTML, XML or plain text.</p>
39
40 <h3>Get Involved!</h3>
41
42 <p><a href="http://bugzilla.opendarwin.org/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Web+Kit&component=XSLT&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Bug+Number&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
43 View bugs in the XSLT component on OpenDarwin.</a>
44 </p>
45
46 <p>Below is a sampling of interesting open issues with WebKit's XSLT support.  If you wish to sign up for any of these tasks, send mail
47 to <a href="mailto:webkit-dev@opendarwin.org">webkit-dev@opendarwin.org</a> or comment in the appropriate bug.</p>
48
49 <dl>
50 <dt><a href="http://bugzilla.opendarwin.org/show_bug.cgi?id=3273">XSL transformations block the user interface</a>
51 <dd>The XSLTProcessor that performs the transformation using libxslt does so on the UI thread.  Therefore a transformation that takes a long time
52 to complete will block the UI of a WebKit application.  The code should be restructured so that both synchronous and asynchronous transformations are
53 allowed, since until JavaScript can be suspended/resumed a synchronous transformation mode must be possible in order for a JS API for XSL transformations to work.
54
55 <dt><a href="http://bugzilla.opendarwin.org/show_bug.cgi?id=3274">The document() function is not supported</a></dt>
56 <dd>The <tt>document()</tt> capability of XSLT is not supported.  XSLT's loader API (the one used to load stylesheets) 
57 needs to be used in order to synchronously load and hand back an XML document.  This code could be 
58 similar to (or possibly reuse) the sync code for XMLHttpRequests.
59
60 <dt><a href="http://bugzilla.opendarwin.org/show_bug.cgi?id=3275">Implement Mozilla's XSLTProcessor JS object</a></dt>
61 <dd>Right now the only way XSLT can be used in WebKit is through the use of client-side processing instructions in the source XML.  Mozilla offers a programmatic
62 API for performing transformations from JS through an <tt>XSLTProcessor</tt> object.  The following <a href="http://www.mozilla.org/projects/xslt/js-interface.html">document</a> 
63 on the Mozilla Web site describes this JS API.  We would like to match this API exactly.
64
65 </dl>
66
67
68 <p><a href="
69 </div>
70 </body>
71 </html>