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

Re: exclude-inline-prefixes or ignore-inline-prefixes?

From: Norman Walsh <ndw@nwalsh.com>
Date: Wed, 13 Aug 2008 13:59:04 -0400
To: public-xml-processing-model-wg@w3.org
Message-ID: <m2proc4x07.fsf@nwalsh.com>
/ Toman_Vojtech@emc.com was heard to say:
|> 
|>   <p:pipeline exclude-inline-prefixes="#all">
|>      ....
|>       <p:group xmlns:d="my-new-namespace">
|>          ....
|>           <p:inline>
|>              <root name="d:foo"/>
|>           </p:inline>
|>           ....
|>       </p:group>
|>       ....
|>   </p:pipeline>
|> 
|> Would produce:
|> 
|>   <root xmlns:d="my-new-namespace" name="d:foo"/>
|> 
|
| I am sorry if I don't see something, but how can this be so? How can the
| XProc processor know (without a schema information) that the value of
| root/@name is a QName and not just a literal string?

It doesn't know anything about the value or its type. The example is a
little confusing because it attempts to illustrate the case where the
excluding namespaces (a) hurts and (b) isn't corrected by namespace
fixup.

The #all on p:pipeline sets the excluded prefixes to "p:" (because
that's the only prefix in-scope on that element). When "d:" is
subsequently added, it isn't excluded, so it comes through.

| If I had a pipeline
| like this:
|
| <p:pipeline exclude-inline-prefixes="#all">
|    ....
|     <p:group xmlns:d="my-new-namespace">
|        ....
|         <p:inline>
|            <root name="c:the-third-letter-in-alphabet"/>
|         </p:inline>
|         <p:inline>
|            <root name="d:the-fourth-letter-in-alphabet"/>
|         </p:inline>
|         ....
|     </p:group>
|     ....
| </p:pipeline>
|
| I would be badly surprised if I got something like this as the result: 
|
| <root name="c:the-third-letter-in-alphabet"/>
| <root xmlns:d="my-new-namespace"
| name="d:the-fourth-letter-in-alphabet"/>

No, you'd get this:

 <root xmlns:d="my-new-namespace" name="c:the-third-letter-in-alphabet"/>
 <root xmlns:d="my-new-namespace" name="d:the-fourth-letter-in-alphabet"/>

On neither element would d: be excluded.

Now, you might also be surprised that this:

<p:pipeline xmlns:d="my-new-namespace" exclude-inline-prefixes="#all">
   ....
    <p:group>
       ....
        <p:inline>
           <root name="c:the-third-letter-in-alphabet"/>
        </p:inline>
        <p:inline>
           <root d:name="some value"/>
        </p:inline>
        ....
    </p:group>
    ....
</p:pipeline>

produces

 <root name="c:the-third-letter-in-alphabet"/>
 <root xmlns:d="my-new-namespace" d:name="some value"/>

but that's just namespace fixup in action.

                                        Be seeing you,
                                          norm

-- 
Norman Walsh <ndw@nwalsh.com> | A life, admirable at first sight, may
http://nwalsh.com/            | have cost so much in imposed
                              | liabilities, chores and self-abasement,
                              | that, brilliant though it appears, it
                              | cannot be considered other than a
                              | failure. Another, which seems to have
                              | misfired, is in reality a triumphant
                              | success, because it has cost so
                              | little.--Henry De Montherlant

Received on Wednesday, 13 August 2008 17:59:48 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 13 August 2008 17:59:49 GMT