W3C home > Mailing lists > Public > public-xml-processing-model-wg@w3.org > September 2007

Re: Towards a consensus draft (urgent)

From: Norman Walsh <ndw@nwalsh.com>
Date: Mon, 10 Sep 2007 16:03:34 -0400
To: public-xml-processing-model-wg@w3.org
Message-ID: <m2d4wqxp7t.fsf@nwalsh.com>
/ Murray Maloney <murray@muzmo.com> was heard to say:
| At 01:06 PM 9/10/2007 -0400, Norman Walsh wrote:
|>[...]
|>bearing in mind that namespace fixup says:
|>
|>    [Definition: Some steps can produce XML documents which have no
|>    direct serialization (because they include nodes with conflicting
|>    or missing namespace declarations, for example). To produce a
|>    serializable XML document, the XProc processor must sometimes add
|>    additional namespace nodes, perhaps even renaming prefixes, to
|>    satisfy the constraints of Namespaces in XML. This process is
|>    referred to as namespace fixup.]
|
| Can anyone produce a pipeline that exemplifies the process known as
| "namespace fixup"?

I'm not exactly sure what you mean, but consider this pipeline:

<p:pipeline name="main" xmlns:p="...">

<p:input port="source1">
  <p:inline>
    <ex:document xmlns:ex="http://example.com/ns/ex">
      <ex:chapter>
        <ex:title>Chapter title</ex:title>
      </ex:chapter>
    </ex:document>
  </p:inline>
</p:input>

<p:input port="source2">
  <p:inline>
    <my:document xmlns:my="http://example.com/ns/my">
      <my:placeholder/>
    </my:document>
  </p:inline>
</p:input>

<p:viewport match="in:placeholder"
            xmlns:in="http://example.com/ns/my">
  <p:viewport-source>
    <p:pipe step="main" port="source2">
  </p:viewport-source>
    
  <p:identity>
    <p:input port="source" select="/out:document/out:chapter"
             xmlns:in="http://example.com/ns/ex">
      <p:pipe step="main" port="source1"/>
    </p:input>
  </p:identity>
</p:viewport>

</p:pipeline>

What is the result of this pipeline? It's something like this:

<my:document xmlns:my="http://example.com/ns/my">
  <ex:chapter>
    <ex:title>Chapter title</ex:title>
  </ex:chapter>
</my:document>

Note in particular that the "ex:chapter" element, lifted out of its
original context, is still in the "http://example.com/ns/ex"
namespace. But we didn't copy any elements that had namespace
attributes which declared that the "ex" prefix was bound to that
namespace.

There's nothing wrong with this document, as an object model or
infoset. But there's no direct serialization of this document that you
can use to recreate it. You need to perform namespace fixup. For
example:

<my:document xmlns:my="http://example.com/ns/my">
  <ex:chapter xmlns:ex="http://example.com/ns/ex">
    <ex:title>Chapter title</ex:title>
  </ex:chapter>
</my:document>

This sort of thing can arise in various ways with a number of our
steps.

                                        Be seeing you,
                                          norm

-- 
Norman Walsh <ndw@nwalsh.com> | It is important what a man still plans
http://nwalsh.com/            | at the end. It shows the measure of
                              | injustice in his death.--Elias Canetti

Received on Monday, 10 September 2007 20:03:48 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:21:54 GMT