%!PS-Adobe-3.0
%%BoundingBox: 54 72 558 720
%%Creator: Mozilla (NetScape) HTML->PS
%%DocumentData: Clean7Bit
%%Orientation: Portrait
%%Pages: 6
%%PageOrder: Ascend
%%Title: The XSL Working Group's Position on Query Languages
%%EndComments
%%BeginProlog
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
/two /three /four /five /six /seven /eight /nine /colon /semicolon
/less /equal /greater /question /at /A /B /C /D /E
/F /G /H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W /X /Y
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
/d /e /f /g /h /i /j /k /l /m
/n /o /p /q /r /s /t /u /v /w
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def
/c { matrix currentmatrix currentpoint translate
3 1 roll scale newpath 0 0 1 0 360 arc setmatrix } bind def
/F0
/Times-Roman findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/f0 { /F0 findfont exch scalefont setfont } bind def
/F1
/Times-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/f1 { /F1 findfont exch scalefont setfont } bind def
/F2
/Times-Italic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/f2 { /F2 findfont exch scalefont setfont } bind def
/F3
/Times-BoldItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/f3 { /F3 findfont exch scalefont setfont } bind def
/F4
/Courier findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/f4 { /F4 findfont exch scalefont setfont } bind def
/F5
/Courier-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/f5 { /F5 findfont exch scalefont setfont } bind def
/F6
/Courier-Oblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/f6 { /F6 findfont exch scalefont setfont } bind def
/F7
/Courier-BoldOblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/f7 { /F7 findfont exch scalefont setfont } bind def
/rhc {
{
currentfile read {
dup 97 ge
{ 87 sub true exit }
{ dup 48 ge { 48 sub true exit } { pop } ifelse }
ifelse
} {
false
exit
} ifelse
} loop
} bind def
/cvgray { % xtra_char npix cvgray - (string npix long)
dup string
0
{
rhc { cvr 4.784 mul } { exit } ifelse
rhc { cvr 9.392 mul } { exit } ifelse
rhc { cvr 1.824 mul } { exit } ifelse
add add cvi 3 copy put pop
1 add
dup 3 index ge { exit } if
} loop
pop
3 -1 roll 0 ne { rhc { pop } if } if
exch pop
} bind def
/smartimage12rgb { % w h b [matrix] smartimage12rgb -
/colorimage where {
pop
{ currentfile rowdata readhexstring pop }
false 3
colorimage
} {
exch pop 8 exch
3 index 12 mul 8 mod 0 ne { 1 } { 0 } ifelse
4 index
6 2 roll
{ 2 copy cvgray }
image
pop pop
} ifelse
} def
/cshow { dup stringwidth pop 2 div neg 0 rmoveto show } bind def
/rshow { dup stringwidth pop neg 0 rmoveto show } bind def
/BeginEPSF {
/b4_Inc_state save def
/dict_count countdictstack def
/op_count count 1 sub def
userdict begin
/showpage {} def
0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin
10 setmiterlimit [] 0 setdash newpath
/languagelevel where
{ pop languagelevel 1 ne
{ false setstrokeadjust false setoverprint } if
} if
} bind def
/EndEPSF {
count op_count sub {pop} repeat
countdictstack dict_count sub {end} repeat
b4_Inc_state restore
} bind def
%%EndProlog
%%Page: 1 1
%%BeginPageSetup
/pagelevel save def
54 0 translate
%%EndPageSetup
newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
0 697.5 moveto
24 f1
(The Query Language Position Paper of the XSL) show
0 669.9 moveto
24 f1
(Working Group) show
0 638.4 moveto
14 f1
(\(Draft 11/18/98\)) show
0 605.3 moveto
18 f1
(Status of this Document) show
0 577.4 moveto
12 f0
(This document expresses the XSL working group's position for the upcoming W3C Query Language) show
0 564.1 moveto
12 f0
(Workshop. It has been discussed and reviewed by the XSL working group and reflects the majority view) show
0 550.8 moveto
12 f0
(expressed by those present at the November 10-12, 1998, face-to-face meeting.) show
0 518.1 moveto
18 f1
(Introduction) show
0 490.2 moveto
12 f0
(The Extensible Stylesheet Language \(XSL\) has facilities that could serve as a basis for an XML query) show
0 476.9 moveto
12 f0
(language. The XSL working group believes that it would be constructive for the W3C to first look) show
0 463.6 moveto
12 f0
(in-house for technologies that might seed a W3C-endorsed query language. It is important to the) show
0 450.3 moveto
12 f0
(working group that the W3C strive to maximize the reuse of technology within the W3C. ) show
0 423.7 moveto
12 f0
(XSL is one of the in-house technologies that the W3C ought to examine. Where XSL and the query) show
0 410.4 moveto
12 f0
(language provide the same functionality, it would be beneficial to do so through compatible) show
0 397.1 moveto
12 f0
(technologies. The W3C might accomplish this by borrowing from and building on XSL's pattern) show
0 383.8 moveto
12 f0
(matching and document transformation capabilities.) show
0 357.2 moveto
12 f0
(It is the consensus of the XSL working group that the W3C should pursue an XML query language that) show
0 343.9 moveto
12 f0
(is based on XSL's pattern and transformation facilities. The working group recommends that further) show
0 330.6 moveto
12 f0
(development of these facilities remain within the XSL working group and that a coordination group take) show
0 317.3 moveto
12 f0
(responsibility for coordinating query requirements with other working groups. The coordination group) show
0 304 moveto
12 f0
(would either strive to ensure that a single query language meets the requirements of all working groups) show
0 290.7 moveto
12 f0
(or that a common query model underlies all W3C query languages.) show
0 258 moveto
18 f1
(Query Facilities in XSL) show
0 230.1 moveto
12 f0
(There are two points where the functionality of XSL and the functionality of query languages seem to) show
0 216.8 moveto
12 f0
(overlap: both retrieve data from an underlying data source, and both construct a new data source from) show
0 203.5 moveto
12 f0
(retrieved data. The following table compares these facilities for SQL and XSL:) show
gsave 0.7 setlinewidth
0 187.6 moveto
504 0 rlineto 0 -107.6 rlineto -504 0 rlineto closepath stroke
grestore
gsave 0.7 setlinewidth
1.4 186.2 moveto
85.7 0 rlineto 0 -20.8 rlineto -85.7 0 rlineto closepath stroke
grestore
4.9 172 moveto
12 f0
( ) show
gsave 0.7 setlinewidth
87.8 186.2 moveto
207 0 rlineto 0 -20.8 rlineto -207 0 rlineto closepath stroke
grestore
146.8 171.5 moveto
12 f1
(Facilities in SQL) show
232.8 171.5 moveto
12 f0
( ) show
gsave 0.7 setlinewidth
295.5 186.2 moveto
207.1 0 rlineto 0 -20.8 rlineto -207.1 0 rlineto closepath stroke
grestore
354.9 171.5 moveto
12 f1
(Facilities in XSL) show
440.2 171.5 moveto
12 f0
( ) show
gsave 0.7 setlinewidth
1.4 164.7 moveto
85.7 0 rlineto 0 -41.3 rlineto -85.7 0 rlineto closepath stroke
grestore
15.6 150.5 moveto
12 f0
(Information) show
20.8 137.2 moveto
12 f0
(Retrieval ) show
gsave 0.7 setlinewidth
87.8 164.7 moveto
207 0 rlineto 0 -20.3 rlineto -207 0 rlineto closepath stroke
grestore
91.3 150.5 moveto
12 f0
(SELECT identifies values to retrieve) show
gsave 0.7 setlinewidth
295.5 164.7 moveto
207.1 0 rlineto 0 -20.3 rlineto -207.1 0 rlineto closepath stroke
grestore
299 150.5 moveto
12 f0
(Select patterns identify nodes to process) show
gsave 0.7 setlinewidth
87.8 143.7 moveto
207 0 rlineto 0 -20.3 rlineto -207 0 rlineto closepath stroke
grestore
91.3 129.5 moveto
12 f0
(WHERE identifies retrieval constraints) show
gsave 0.7 setlinewidth
295.5 143.7 moveto
207.1 0 rlineto 0 -20.3 rlineto -207.1 0 rlineto closepath stroke
grestore
299 129.5 moveto
12 f0
(Pattern qualifiers specify node criteria) show
gsave 0.7 setlinewidth
1.4 122.7 moveto
85.7 0 rlineto 0 -41.3 rlineto -85.7 0 rlineto closepath stroke
grestore
11.7 108.5 moveto
12 f0
(Construction ) show
gsave 0.7 setlinewidth
87.8 122.7 moveto
207 0 rlineto 0 -20.3 rlineto -207 0 rlineto closepath stroke
grestore
91.3 108.5 moveto
12 f0
(Queries return virtual database tables) show
gsave 0.7 setlinewidth
295.5 122.7 moveto
207.1 0 rlineto 0 -20.3 rlineto -207.1 0 rlineto closepath stroke
grestore
299 108.5 moveto
12 f0
(Stylesheets create new XML documents) show
gsave 0.7 setlinewidth
87.8 101.7 moveto
207 0 rlineto 0 -20.3 rlineto -207 0 rlineto closepath stroke
grestore
91.3 87.5 moveto
12 f0
(ORDER BY orders returned rows) show
gsave 0.7 setlinewidth
295.5 101.7 moveto
207.1 0 rlineto 0 -20.3 rlineto -207.1 0 rlineto closepath stroke
grestore
299 87.5 moveto
12 f0
(xsl:sort orders created elements) show
pagelevel restore
showpage
%%Page: 2 2
%%BeginPageSetup
/pagelevel save def
54 0 translate
%%EndPageSetup
newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
0 704 moveto
12 f0
(It is reasonable to expect that a query language for XML will also have these facilities. For example, the) show
0 690.7 moveto
12 f0
(XML-QL submission defines a WHERE clause for information retrieval and a CONSTRUCT clause for) show
0 677.4 moveto
12 f0
(construction. The XSL specification partitions these facilities out as separate technologies that are not) show
0 664.1 moveto
12 f0
(tied to the concerns of print and display, making it possible to reuse the technologies for other) show
0 650.8 moveto
12 f0
(endeavors.) show
0 621.9 moveto
14 f1
(Patterns) show
0 594.9 moveto
12 f0
(XSL uses a "pattern" language for information retrieval. The pattern language is a concise syntax for) show
0 581.6 moveto
12 f0
(identifying nodes within an XML document. XSL defines two kinds of patterns: match patterns and) show
0 568.3 moveto
12 f0
(select patterns. A select pattern retrieves all nodes that meet the criteria that the pattern specifies. This) show
0 555 moveto
12 f0
(process is known as "selection." A match pattern asks a question about a node to determine whether the) show
0 541.7 moveto
12 f0
(pattern identifies the node. For each node in the source document the XSL processor examines each) show
0 528.4 moveto
12 f0
(template \(see the description of templates below\) to determine whether the match pattern in the template) show
0 515.1 moveto
12 f0
(identifies the node. In the case where there is more than one template that matches, a single one is) show
0 501.8 moveto
12 f0
(selected based on criteria that XSL defines. This process is known as "matching.") show
0 475.2 moveto
12 f0
(Match and select patterns use the same underlying syntax, but match patterns are constrained to a subset) show
0 461.9 moveto
12 f0
(of this syntax. Match patterns are used in construction and select patterns are used for information) show
0 448.6 moveto
12 f0
(retrieval.) show
0 422 moveto
12 f0
(To further clarify the distinction between match patterns and select patterns, consider the example) show
0 408.7 moveto
12 f0
(pattern ) show
36.3 408.7 moveto
12 f0
(product/sku) show
92.9 408.7 moveto
12 f0
(. As a match pattern this example tests a node to determine whether it is a ) show
449.1 408.7 moveto
12 f0
(sku) show
0 395.4 moveto
12 f0
(element that is a child of a ) show
129.6 395.4 moveto
12 f0
(product) show
166.2 395.4 moveto
12 f0
( element. As a select pattern the example queries a node for the) show
0 382.1 moveto
12 f0
(immediate children that are ) show
134.6 382.1 moveto
12 f0
(product) show
171.2 382.1 moveto
12 f0
( elements and then queries each of these ) show
367.1 382.1 moveto
12 f0
(product) show
403.7 382.1 moveto
12 f0
( elements for the) show
0 368.8 moveto
12 f0
(immediate children that are ) show
134.6 368.8 moveto
12 f0
(sku) show
151.2 368.8 moveto
12 f0
( elements. The result of applying the match pattern is a Boolean value,) show
0 355.5 moveto
12 f0
(while the result of applying the select pattern is a set of ) show
267.9 355.5 moveto
12 f0
(sku) show
284.5 355.5 moveto
12 f0
( elements.) show
0 328.9 moveto
12 f0
(The pattern language syntax is modeled on file system path names. An XML document may be thought) show
0 315.6 moveto
12 f0
(of as a file system. Each element in the document may be thought of as a directory, and descendant) show
0 302.3 moveto
12 f0
(elements may be thought of as subdirectories. Slashes partition element names to name a path through) show
0 289 moveto
12 f0
(the elements of the document. XSL embellishes this notation with qualifiers. Qualifiers specify) show
0 275.7 moveto
12 f0
(constraints on the elements named in the path so that elements may be selected as a function of their) show
0 262.4 moveto
12 f0
(content and attributes.) show
0 235.8 moveto
12 f0
(The following examples briefly illustrate XSL's pattern language:) show
pagelevel restore
showpage
%%Page: 3 3
%%BeginPageSetup
/pagelevel save def
54 0 translate
%%EndPageSetup
newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
gsave 0.7 setlinewidth
0 719.9 moveto
504 0 rlineto 0 -356.8 rlineto -504 0 rlineto closepath stroke
grestore
gsave 0.7 setlinewidth
1.4 718.5 moveto
252 0 rlineto 0 -20.8 rlineto -252 0 rlineto closepath stroke
grestore
4.9 703.8 moveto
12 f1
(Pattern) show
gsave 0.7 setlinewidth
254.1 718.5 moveto
248.5 0 rlineto 0 -20.8 rlineto -248.5 0 rlineto closepath stroke
grestore
257.6 703.8 moveto
12 f1
(Explanation) show
gsave 0.7 setlinewidth
1.4 697 moveto
252 0 rlineto 0 -46.9 rlineto -252 0 rlineto closepath stroke
grestore
4.9 685.5 moveto
10 f4
(/) show
gsave 0.7 setlinewidth
254.1 697 moveto
248.5 0 rlineto 0 -46.9 rlineto -248.5 0 rlineto closepath stroke
grestore
257.6 682.8 moveto
12 f0
(Identifies the root of the document, which) show
257.6 669.5 moveto
12 f0
(contains a single child that is the document's root) show
257.6 656.2 moveto
12 f0
(element.) show
gsave 0.7 setlinewidth
1.4 649.4 moveto
252 0 rlineto 0 -46.9 rlineto -252 0 rlineto closepath stroke
grestore
4.9 637.9 moveto
10 f4
(category/product) show
gsave 0.7 setlinewidth
254.1 649.4 moveto
248.5 0 rlineto 0 -46.9 rlineto -248.5 0 rlineto closepath stroke
grestore
257.6 635.2 moveto
12 f0
(Identifies product elements that are immediate) show
257.6 621.9 moveto
12 f0
(children of the ) show
330.5 621.9 moveto
12 f0
(category) show
371.8 621.9 moveto
12 f0
( element. \(`/' selects) show
257.6 608.6 moveto
12 f0
(immediate children.\)) show
gsave 0.7 setlinewidth
1.4 601.8 moveto
252 0 rlineto 0 -46.9 rlineto -252 0 rlineto closepath stroke
grestore
4.9 590.3 moveto
10 f4
(category/product/sku) show
gsave 0.7 setlinewidth
254.1 601.8 moveto
248.5 0 rlineto 0 -46.9 rlineto -248.5 0 rlineto closepath stroke
grestore
257.6 587.6 moveto
12 f0
(Identifies ) show
305.9 587.6 moveto
12 f0
(sku) show
322.5 587.6 moveto
12 f0
( elements that are immediate) show
257.6 574.3 moveto
12 f0
(children of ) show
312.9 574.3 moveto
12 f0
(product) show
349.5 574.3 moveto
12 f0
( elements that are immediate) show
257.6 561 moveto
12 f0
(children of a ) show
321.2 561 moveto
12 f0
(category) show
362.5 561 moveto
12 f0
( element.) show
gsave 0.7 setlinewidth
1.4 554.2 moveto
252 0 rlineto 0 -46.9 rlineto -252 0 rlineto closepath stroke
grestore
4.9 542.7 moveto
10 f4
(category//sku) show
gsave 0.7 setlinewidth
254.1 554.2 moveto
248.5 0 rlineto 0 -46.9 rlineto -248.5 0 rlineto closepath stroke
grestore
257.6 540 moveto
12 f0
(Identifies sku elements found anywhere within) show
257.6 526.7 moveto
12 f0
(the category element. \(`//' selects descendant) show
257.6 513.4 moveto
12 f0
(elements.\)) show
gsave 0.7 setlinewidth
1.4 506.6 moveto
252 0 rlineto 0 -33.6 rlineto -252 0 rlineto closepath stroke
grestore
4.9 495.1 moveto
10 f4
(//sku) show
gsave 0.7 setlinewidth
254.1 506.6 moveto
248.5 0 rlineto 0 -33.6 rlineto -248.5 0 rlineto closepath stroke
grestore
257.6 492.4 moveto
12 f0
(Identifies all ) show
320.9 492.4 moveto
12 f0
(sku) show
337.5 492.4 moveto
12 f0
( elements found anywhere within) show
257.6 479.1 moveto
12 f0
(the document. \(Here `//' is relative to the root.\)) show
gsave 0.7 setlinewidth
1.4 472.3 moveto
252 0 rlineto 0 -46.9 rlineto -252 0 rlineto closepath stroke
grestore
4.9 460.8 moveto
10 f4
(product[attribute\(size\)="10"]) show
gsave 0.7 setlinewidth
254.1 472.3 moveto
248.5 0 rlineto 0 -46.9 rlineto -248.5 0 rlineto closepath stroke
grestore
257.6 458.1 moveto
12 f0
(Identifies product elements having a ) show
435.2 458.1 moveto
12 f0
(size) show
453.8 458.1 moveto
12 f0
( attribute) show
257.6 444.8 moveto
12 f0
(whose value is "10". The brackets enclose a) show
257.6 431.5 moveto
12 f0
(qualifier.) show
gsave 0.7 setlinewidth
1.4 424.7 moveto
252 0 rlineto 0 -60.2 rlineto -252 0 rlineto closepath stroke
grestore
4.9 413.2 moveto
10 f4
(product[attribute\(size\)="10"]/sku) show
gsave 0.7 setlinewidth
254.1 424.7 moveto
248.5 0 rlineto 0 -60.2 rlineto -248.5 0 rlineto closepath stroke
grestore
257.6 410.5 moveto
12 f0
(Identifies ) show
305.9 410.5 moveto
12 f0
(sku) show
322.5 410.5 moveto
12 f0
( elements that are immediate) show
257.6 397.2 moveto
12 f0
(children of ) show
312.9 397.2 moveto
12 f0
(product) show
349.5 397.2 moveto
12 f0
( elements having a ) show
442.1 397.2 moveto
12 f0
(size) show
257.6 383.9 moveto
12 f0
(attribute whose value is "10". The brackets) show
257.6 370.6 moveto
12 f0
(enclose a qualifier.) show
0 336.8 moveto
14 f1
(Templates) show
0 309.8 moveto
12 f0
(XSL examines a source document and applies templates to the nodes of the source document to create a) show
0 296.5 moveto
12 f0
(result document. XSL's stylesheets use ) show
191.3 296.5 moveto
12 f0
(xsl:template) show
249.9 296.5 moveto
12 f0
( elements to define how the result document is) show
0 283.2 moveto
12 f0
(constructed. The content of such an element is a template for content that is to be inserted into the result) show
0 269.9 moveto
12 f0
(document. Descendents of ) show
129.9 269.9 moveto
12 f0
(xsl:template) show
188.5 269.9 moveto
12 f0
( that belong to the XSL namespace control the construction) show
0 256.6 moveto
12 f0
(process, while all other descendant elements are copied into the result document. As previously) show
0 243.3 moveto
12 f0
(described, the ) show
69.6 243.3 moveto
12 f0
(match) show
98.9 243.3 moveto
12 f0
( attribute of ) show
157.8 243.3 moveto
12 f0
(xsl:template) show
216.4 243.3 moveto
12 f0
( contains a match pattern that identifies the elements to) show
0 230 moveto
12 f0
(which the template applies.) show
0 203.4 moveto
12 f0
(The following examples briefly illustrate XSL's templates:) show
pagelevel restore
showpage
%%Page: 4 4
%%BeginPageSetup
/pagelevel save def
54 0 translate
%%EndPageSetup
newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
gsave 0.7 setlinewidth
0 719.9 moveto
504 0 rlineto 0 -299.4 rlineto -504 0 rlineto closepath stroke
grestore
gsave 0.7 setlinewidth
1.4 718.5 moveto
302.4 0 rlineto 0 -20.8 rlineto -302.4 0 rlineto closepath stroke
grestore
4.9 703.8 moveto
12 f1
(Template) show
gsave 0.7 setlinewidth
304.5 718.5 moveto
198.1 0 rlineto 0 -20.8 rlineto -198.1 0 rlineto closepath stroke
grestore
308 703.8 moveto
12 f1
(Explanation) show
gsave 0.7 setlinewidth
1.4 697 moveto
302.4 0 rlineto 0 -60.2 rlineto -302.4 0 rlineto closepath stroke
grestore
4.9 685.5 moveto
10 f4
() show
4.9 675 moveto
10 f4
( SKU: ) show
4.9 664.5 moveto
10 f4
() show
gsave 0.7 setlinewidth
304.5 697 moveto
198.1 0 rlineto 0 -60.2 rlineto -198.1 0 rlineto closepath stroke
grestore
308 682.8 moveto
12 f0
(For each instance of the ) show
425.6 682.8 moveto
12 f0
(sku) show
442.2 682.8 moveto
12 f0
( element,) show
308 669.5 moveto
12 f0
(constructs text consisting of the word) show
308 656.2 moveto
12 f0
("SKU:" followed by the textual content) show
308 642.9 moveto
12 f0
(of the ) show
338.6 642.9 moveto
12 f0
(sku) show
355.2 642.9 moveto
12 f0
( element.) show
gsave 0.7 setlinewidth
1.4 636.1 moveto
302.4 0 rlineto 0 -86.8 rlineto -302.4 0 rlineto closepath stroke
grestore
4.9 624.6 moveto
10 f4
() show
4.9 614.1 moveto
10 f4
( NAME: ) show
4.9 603.6 moveto
10 f4
( ) show
4.9 593.1 moveto
10 f4
() show
gsave 0.7 setlinewidth
304.5 636.1 moveto
198.1 0 rlineto 0 -86.8 rlineto -198.1 0 rlineto closepath stroke
grestore
308 621.9 moveto
12 f0
(When used in combination with the) show
308 608.6 moveto
12 f0
(previous template, constructs the name) show
308 595.3 moveto
12 f0
(of each product and all SKUs) show
308 582 moveto
12 f0
(associated with each product, where) show
308 568.7 moveto
12 f0
(the name is drawn from the value of a) show
308 555.4 moveto
12 f0
(product) show
344.6 555.4 moveto
12 f0
( element's ) show
397.2 555.4 moveto
12 f0
(name) show
423.1 555.4 moveto
12 f0
( attribute.) show
gsave 0.7 setlinewidth
1.4 548.6 moveto
302.4 0 rlineto 0 -126.7 rlineto -302.4 0 rlineto closepath stroke
grestore
4.9 537.1 moveto
10 f4
() show
4.9 526.6 moveto
10 f4
( ) show
4.9 516.1 moveto
10 f4
( ) show
4.9 505.6 moveto
10 f4
( ) show
4.9 495.1 moveto
10 f4
() show
gsave 0.7 setlinewidth
304.5 548.6 moveto
198.1 0 rlineto 0 -126.7 rlineto -198.1 0 rlineto closepath stroke
grestore
308 534.4 moveto
12 f0
(When used in combination with the) show
308 521.1 moveto
12 f0
(first template, constructs one ) show
449.6 521.1 moveto
12 f0
(SKUS) show
308 507.8 moveto
12 f0
(element for each ) show
390.9 507.8 moveto
12 f0
(category) show
432.2 507.8 moveto
12 f0
( element,) show
308 494.5 moveto
12 f0
(gives the element a name equal to the) show
308 481.2 moveto
12 f0
(value of the ) show
367.6 481.2 moveto
12 f0
(name) show
393.5 481.2 moveto
12 f0
( attribute of the) show
308 467.9 moveto
12 f0
(associated ) show
360.3 467.9 moveto
12 f0
(category) show
401.6 467.9 moveto
12 f0
( element, and lists) show
308 454.6 moveto
12 f0
(all of the SKUs contained within the) show
308 441.3 moveto
12 f0
(category) show
349.3 441.3 moveto
12 f0
( element's child ) show
428.9 441.3 moveto
12 f0
(product) show
308 428 moveto
12 f0
(elements.) show
0 396.5 moveto
12 f0
(These examples demonstrate the use of XSL patterns and templates to retrieve information from a) show
0 383.2 moveto
12 f0
(document and to construct a result document that provides a virtual view of the source document.) show
0 369.9 moveto
12 f0
(Consider the last of the above example templates. This template may be thought of as a query for all) show
0 356.6 moveto
12 f0
(SKUs and the categories to which the SKUs belong, where the resulting SKUs are grouped by category.) show
0 323.9 moveto
18 f1
(Comparing Stylesheets and Queries) show
0 296 moveto
12 f0
(Stylesheets and XML queries have significant overlap because both may yield XML documents.) show
0 282.7 moveto
12 f0
(However, the emphasis placed on certain features tends to differ between a query language and a) show
0 269.4 moveto
12 f0
(stylesheet language.) show
0 242.8 moveto
12 f0
(For example, a query language generally places more emphasis on:) show
18.1 220.3 moveto
3.3 3.3 c fill
28 216.2 moveto
12 f0
(more complex information retrieval) show
199.6 216.2 moveto
12 f0
( ) show
18.1 207 moveto
3.3 3.3 c fill
28 202.9 moveto
12 f0
(the naming and reuse of intermediate query results) show
270.9 202.9 moveto
12 f0
( ) show
18.1 193.7 moveto
3.3 3.3 c fill
28 189.6 moveto
12 f0
(the ability to perform joins, whether between documents or within a document) show
404.6 189.6 moveto
12 f0
( ) show
18.1 180.4 moveto
3.3 3.3 c fill
28 176.3 moveto
12 f0
(the ability to retreive information from multiple documents) show
312.3 176.3 moveto
12 f0
( ) show
0 149.7 moveto
12 f0
(While a stylesheet language normally places more importance on:) show
18.1 127.2 moveto
3.3 3.3 c fill
28 123.1 moveto
12 f0
(handling recursive and heterogeneous XML data) show
262.2 123.1 moveto
12 f0
( ) show
18.1 113.9 moveto
3.3 3.3 c fill
28 109.8 moveto
12 f0
(controlling whitespace) show
136.9 109.8 moveto
12 f0
( ) show
18.1 100.6 moveto
3.3 3.3 c fill
28 96.5 moveto
12 f0
(numbering and other positional features) show
219.3 96.5 moveto
12 f0
( ) show
18.1 87.3 moveto
3.3 3.3 c fill
28 83.2 moveto
12 f0
(supporting multiple output documents) show
211 83.2 moveto
12 f0
( ) show
pagelevel restore
showpage
%%Page: 5 5
%%BeginPageSetup
/pagelevel save def
54 0 translate
%%EndPageSetup
newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
0 704.6 moveto
12 f0
(In addition to these transformational requirements, a stylesheet language also defines a set of formatting) show
0 691.3 moveto
12 f0
(capabilities. XSL clearly demarcates the boundary between transformation and formatting by separating) show
0 678 moveto
12 f0
(these concerns into two different XML namespaces and by defining formatting objects so that neither) show
0 664.7 moveto
12 f0
(patterns nor templates are dependent on them.) show
0 632 moveto
18 f1
(Why Start with XSL?) show
0 604.1 moveto
12 f0
(Suppose someone has an XML document and needs to create another XML document from it. If both) show
0 590.8 moveto
12 f0
(XSL and the query language are capable of generating XML from XML, the person has a bit of a) show
0 577.5 moveto
12 f0
(dilemma. Either technology would suffice. Let's say the person decides to go with XSL. A few weeks or) show
0 564.2 moveto
12 f0
(months down the road this person may find that the query language was the proper choice and now must) show
0 550.9 moveto
12 f0
(replace all occurrences of XSL stylesheets with XML queries. Substitute "person" with "W3C working) show
0 537.6 moveto
12 f0
(group" and it becomes easy to see the dilemmas we could be creating for the W3C in the future.) show
0 511 moveto
12 f0
(This scenario suggests that the W3C should at least attempt to ensure that it recommends compatible) show
0 497.7 moveto
12 f0
(technologies for similar functionality. Here are some reasons for borrowing technology from XSL:) show
12.4 471.1 moveto
12 f0
(1.) show
28 471.1 moveto
12 f0
(When there are fewer standards for a given task, vendor support is less divided among the) show
28 457.8 moveto
12 f0
(standards, and vendor products are more interoperable.) show
291.9 457.8 moveto
12 f0
( ) show
12.4 444.5 moveto
12 f0
(2.) show
28 444.5 moveto
12 f0
(The fewer technologies users have to learn, the easier and faster it is for users to learn new) show
28 431.2 moveto
12 f0
(products, and the less time and money companies have to spend educating users.) show
415.2 431.2 moveto
12 f0
( ) show
12.4 417.9 moveto
12 f0
(3.) show
28 417.9 moveto
12 f0
(The W3C can get a head start by starting with related technologies that it already espouses.) show
465.2 417.9 moveto
12 f0
( ) show
12.4 404.6 moveto
12 f0
(4.) show
28 404.6 moveto
12 f0
(XSL uses separate technologies for information retrieval and document construction, which allows) show
28 391.3 moveto
12 f0
(the information retrieval mechanism to be used in places where construction is not required.) show
469.9 391.3 moveto
12 f0
( ) show
0 364.7 moveto
12 f0
(The W3C should be able to accrue the above benefits by using XSL technologies as the foundation of) show
0 351.4 moveto
12 f0
(the query language and by building on this foundation to satisfy requirements that exceed XSL query) show
0 338.1 moveto
12 f0
(requirements.) show
0 305.4 moveto
18 f1
(XSL Query Requirements) show
0 277.5 moveto
12 f0
(Regardless of the query language that the W3C defines, XSL may benefit by using the language or some) show
0 264.2 moveto
12 f0
(subset of it. To allow the XSL working group to have this option, the group suggests that the query) show
0 250.9 moveto
12 f0
(language should satisfy the requirements that XSL's pattern language satisfies. These requirements) show
0 237.6 moveto
12 f0
(follow:) show
12.4 211 moveto
12 f0
(1.) show
28 211 moveto
12 f0
(The query language should be at least as expressive as XSL's pattern language. That is, the query) show
28 197.7 moveto
12 f0
(language should be able to identify any set of nodes that the pattern language is capable of) show
28 184.4 moveto
12 f0
(identifying.) show
83.6 184.4 moveto
12 f0
( ) show
12.4 171.1 moveto
12 f0
(2.) show
28 171.1 moveto
12 f0
(The query language should be usable for node selection. \("Selection" is defined above.\)) show
448.3 171.1 moveto
12 f0
( ) show
12.4 157.8 moveto
12 f0
(3.) show
28 157.8 moveto
12 f0
(The query language should be usable for node matching. \("Matching" is defined above.\)) show
451.7 157.8 moveto
12 f0
( ) show
12.4 144.5 moveto
12 f0
(4.) show
28 144.5 moveto
12 f0
(The query language should be able to perform relative navigation. For example, XSL's ancestor\(\)) show
28 131.2 moveto
12 f0
(term may appear in select patterns to identify the ancestor of the node under query.) show
426.2 131.2 moveto
12 f0
( ) show
0 104.6 moveto
12 f0
(This paper does not attempt to identify the details of XSL's query requirements, since XSL's pattern) show
0 91.3 moveto
12 f0
(language already embodies these requirements, and since the above references to the pattern language) show
0 78 moveto
12 f0
(should convey the requirements.) show
pagelevel restore
showpage
%%Page: 6 6
%%BeginPageSetup
/pagelevel save def
54 0 translate
%%EndPageSetup
newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
0 693.3 moveto
18 f1
(Summary of Position) show
0 665.4 moveto
12 f0
(The XSL working group believes that it has already developed technologies that are relevant to a query) show
0 652.1 moveto
12 f0
(language for XML. These technologies are XSL templates and XSL patterns. The working group does) show
0 638.8 moveto
12 f0
(not have a clear picture of how a query language effort could best leverage from XSL technologies, but) show
0 625.5 moveto
12 f0
(the working group is willing to make the following assertions:) show
12.4 598.9 moveto
12 f0
(1.) show
28 598.9 moveto
12 f0
(The query language should use XSL's patterns as the basis for information retrieval.) show
432.9 598.9 moveto
12 f0
( ) show
12.4 585.6 moveto
12 f0
(2.) show
28 585.6 moveto
12 f0
(The query language should use XSL's templates as the basis for materializing query results.) show
469.2 585.6 moveto
12 f0
( ) show
12.4 572.3 moveto
12 f0
(3.) show
28 572.3 moveto
12 f0
(The query language should be a least as expressive as XSL is currently.) show
371.5 572.3 moveto
12 f0
( ) show
12.4 559 moveto
12 f0
(4.) show
28 559 moveto
12 f0
(Development of the pattern and transformation languages should remain in the XSL working) show
28 545.7 moveto
12 f0
(group.) show
58.9 545.7 moveto
12 f0
( ) show
12.4 532.4 moveto
12 f0
(5.) show
28 532.4 moveto
12 f0
(A coordination group should ensure either that a single query language satisfies all working group) show
28 519.1 moveto
12 f0
(requirements or that all W3C query languages share an underlying query model.) show
413.2 519.1 moveto
12 f0
( ) show
0 492.5 moveto
12 f0
(The most fundamental concern of the working group is that the W3C should strive for compatibility) show
0 479.2 moveto
12 f0
(among technologies that have overlapping functionality. Compatibility broadens vendor support, ensures) show
0 465.9 moveto
12 f0
(interoperability, minimizes user learning curves, and promotes reuse within the W3C.) show
pagelevel restore
showpage
%%EOF