- From: Norman Walsh <ndw@nwalsh.com>
- Date: Fri, 14 Sep 2012 13:25:35 -0500
- To: public-xml-processing-model-wg@w3.org
- Message-ID: <m2fw6k4g2o.fsf@nwalsh.com>
"Toman, Vojtech" <vojtech.toman@emc.com> writes: > 4. To allow for non-XML support in XPath, we will introduce a number of XDM > extensions: Do we have to make them extensions, or can this be an implementation detail? I can imagine, for example, having my own DocumentSuperNode type that is passed between steps. It wraps either an XdmNode in the case of XML or a BinaryNode in the case of non-XML. > 5. Shimming > > While evaluating a pipeline, the XProc processor performs the following > algorithm when data appears on a port of a step: [...] > [[Note: Some aspects of the above algorithm, especially the fall-back > behavior, may be questionable. This definitely needs some discussion.]] At a first reading, the rules you propose seem reasonable. > An important aspect of the above algorithm is that it applies not only to the > input ports, but also to the output ports: before the data appears on an > output port, it is converted to the appropriate media type. Am I right that this is only an issue for compound steps? If I write an (atomic) extension step that asserts it produces application/xml and at runtime it actually produces image/jpeg, is that an "error" that the XProc processor is supposed to detect and correct? > The media type conversion applies only to the p:input and p:output > elements. It does not take place when the XProc processor processes the > p:with-option, p:with-param, and p:variable elements, nor the > p:xpath-context, p:iteration-source, and p:viewport-source elements. It also > does not apply when the XProc processor evaluates the test expressions of > p:choose/p:when elements. In these cases, the XPath expressions use the > original data as the context item. How tricky is that? From an XPath expression, is a binary document just an empty document node? Does "/foo" return false, "count(//foo)" return 0, etc.? What does string-length() return? > The kinds of mappings between different media types the XProc processor > supports is left implementation-defined. > > [[Note: I think that to make the "shimming" feature interoperable and > actually useful at all, it should not be left too implementation-defined. I > think we would have to define a bunch of mappings between common media types > that the users can rely on. The downside of this is that this might be quite > hard and it might shift the focus of this specification into a whole > different direction. How many different mappings does your implementation support today? I wonder if we can mitigate the interop problem by having a mechanism for the pipeline to declare what mappings it needs? At least then a processor can reject a pipeline statically with a reasonable error message: "error: pipeline requires unsupported image/png to text/plain conversion." > A radical approach might be not to support shimming at all and simply say > that if data of incompatible media type arrives, you get a dynamic > error. Conversion between different media types can be left to > special-purpose custom (or standardized?) steps.]] That seems less user-friendly. Be seeing you, norm -- Norman Walsh Lead Engineer MarkLogic Corporation Phone: +1 512 761 6676 www.marklogic.com
Received on Friday, 14 September 2012 20:30:52 UTC