1.1 WD comments on fo:instream-foreign-object content model

Editors:

I have some suggestions for the 1.0/1.1 content model for 
fo:instream-foreign-object [1].  Here is a (truncated) example for 
reference:

<fo:instream-foreign-object>
<svg:svg xmlns:svg="http://www.w3.org/2000/svg" width = "542px" 
height="505px">
<svg:title>A tiger</svg:title>
<svg:g transform="translate(190, 170)">
 <svg:g style="stroke:#a5264c; stroke-width:2">
  <svg:path d="M47 244.801C47 244.801 50.6 242.401 53 243.601"/>
 </svg:g>
 ....
 ....
</svg:g>
</svg:svg>
</fo:instream-foreign-object>


The text in question is from the "Content Model" block, reproduced below:

"
The fo:instream-foreign-object flow object has a child from a non-XSL 
namespace. The permitted structure of this child is that defined for 
that namespace.

The fo:instream-foreign-object flow object may have additional 
attributes *in the non-XSL namespace.* These, as well as the xsl defined 
properties, *are made available* to the processor of the content of the 
flow object. Their semantics is defined by that namespace.
"

Comments:

1.)  Last sentence of the second paragraph-- change "Their semantics is 
defined..." to "are defined..."

2.)  In the first sentence of the second paragraph, where I've placed 
the asterisks, I would recommend switching from "in the non-XSL 
namespace" (i.e., only the namespace of the child element) to "from 
non-XSL namespaces".  It seems unnecessary to limit the child element to 
only the attributes from (a) XSL and (b) its own namespace, given that 
the subsequent sentence indicates that the child may be able to work 
with attributes outside its own namespace.

3.)  For the second sentence of the second paragraph, again where I've 
placed the asterisks, switch from "are made available" to "may be made 
available".  Some child elements from certain namespaces may not have a 
defined protocol for accepting and working with attributes from a 
non-SVG parent node.  Rather, they would require those attributes to be 
directly attached to the child element.  (For example, in the fo:i-f-o 
example above, the "width" and "height" attributes are directly assigned 
to the svg:svg node.)

Perhaps a more complete way to rephrase the last two sentences of the 
second paragraph would be something like:

"These, as well as the xsl defined properties, may be made available to 
the processor of the child element, depending on that processor's 
requirements. The semantics of any attributes passed in would be defined 
by the processor."

4.)  Finally, as a sanity check, I'm unsure of the benefits of passing 
in the properties of the fo:i-f-o to the child processor under any 
circumstances.  Because the protocol of this passing-in is undefined by 
both XSL and (potentially) the child namespace(s), this would appear to 
affect interoperability among the various XSL implementations and among 
the various processors of that child element.  At any rate, AFAIK, svg 
itself has no provision for working with attributes not directly affixed 
to its elements, so I'm unsure why other namespaces would need that 
functionality.

It would appear cleaner to require that any attributes one wishes to 
send the child--fonts, color, location, etc.--be directly attached to 
the child element.  Such a requirement would also force the child 
namespaces to be more cleanly implemented:  Rather than their 
recommendations stating "When this object is being embedded within an 
XSL:instream-foreign-object, read in these XSL properties from that 
object..." they would instead need to define those attributes within 
their own namespaces, to be attached by the user to that child's elements.

Thanks,

Glen Mazza
Apache FOP Team

[1] http://www.w3.org/TR/2003/WD-xsl11-20031217/#fo_instream-foreign-object

Received on Saturday, 21 August 2004 13:50:32 UTC