- From: Erik Bruchez <ebruchez@orbeon.com>
- Date: Mon, 16 Jan 2006 12:07:41 +0100
- To: public-xml-processing-model-wg@w3.org
Rui Lopes wrote: > I've thought a bit more about this issue. I agree with you, > regarding the XSLT processor. However, requiring infosets as inputs > is a problem: if you have an XQuery processor, your approach would > require queries to be written in XQueryX [1]; if you have a Relax NG > schema, compact syntax would not be allowed; a hypothetic SQL > processor would require queries to be wrapped into an XML envelope. > > While all these issues can be handled with infosets, I'm sure that > we'll get a lot of pushback from the community. I believe it's > another issue we'll have to take into account when defining XProc's > data model. The questions of XQuery and Relax NG compact are interesting. A few points: 1. If you want a pipeline step to *generate* an XQuery or RNG Compact document, then you have two posssibilities to consider: a. You allow your processing model to natively produce non-XML documents. I can only reiterate my fears here, as I think we should concentrate on processing XML, not general-purpose text and binary documents (the name of the processing group is "XML Processing Model", not "Document Processing Model" ;-). We should have the courage to out-of-scope use cases that deviate too much from the original goal. b. You find a way of embedding your non-XML documents within XML. More on this right below. 2. You can define standard ways of embedding text and binary documents within XML. This is what our XPL implementation does [2]. However, we do not actually specify how this is done in the XPL spec. [3] Note this comment: "Limiting inputs and outputs to XML Infosets makes the language simpler, while still not prohibiting passing non-XML Infoset data by encapsulating it within an XML Infoset, be it a simple root element containing character data." 3. In the particular case of XQuery, a standard way of embedding it within XML should be defined (not by this WG, however). IMO XQueryX is utterly useless for practical purposes, and we discussed in the past [1] the need for decent, standardized XQuery embedding, but I don't think that has been done yet. However in OPS we used our own "natural" XQuery embedding syntax. For example: <html> <body> <table> { for $d in //td[contains(a/small/text(), "New York, NY")] return for $row in $d/parent::tr/parent::table/tr where contains($d/a/small/text()[1], "New York") return <tr><td>{data($row/td[1])}</td> <td>{data($row/td[2])}</td> <td>{$row/td[3]//img}</td></tr> } </table> </body> </html> By using such embedding, you can consume and produce XQuery in a pure XML infoset pipeline. 4. If you just want to provide an *external* XQuery or Relax NG compact document as input to a component, then you could for example do this with passing a URL to the component: <p:processor name="xpl:xquery"> <p:input name="xquery" href="my-xquery.xquery"/> <p:input name="data" infosetref="my-document.xml"/> <p:output name="data" infoset="my-result"/> </p:processor> This approach limits passing non-XML documents as *inputs* to components. As far as XPL is concerned, we would be bending the rule of "everything is an XML infoset", which is why technically the distinction made in the example above between infoset and non-infoset inputs actually does not exist in XPL. 5. Another comment regarding Relax NG compact: as mentioned above in #1, producing Relax NG compact for further use in the pipeline seems a out of scope to us. But this does not preclude out-of-band validation as a built-in feature of the pipeline language, as is the case with XPL. You can validate with a single attribute inputs and inputs of components and pipelines, for example: <p:input name="data" infosetref="doc.xml" schema-href="my-schema.rng"/> In this particular case, there would not be any particular problem using the RNG compact syntax, as it is up to the pipeline engine to read and process the schema. In other words, schemas are here "out of band", i.e. out of the flow of XML infosets usually exchanged by components. -Erik [1] http://www.stylusstudio.com/xquerytalk/200504/000541.html [2] http://www.orbeon.com/ops/doc/reference-formats [3] http://www.w3.org/Submission/xpl/
Received on Monday, 16 January 2006 11:07:51 UTC