xsl-list
[Top] [All Lists]

[xsl] Re: Unwanted namespace prefix _0

2013-12-23 11:49:32
Another oddity is this: even if I define a namespace prefix for the Examples namespace:

 xmlns:eg="http://www.tei-c.org/ns/Examples";

in the stylesheet root element, Saxon still uses the _0 prefix in the output.

It's easy to cleanup with a regex search-and-replace, but it's really annoying. There must be some way around it, otherwise people would be asking this question all the time, surely? I assumed I'd just forgotten something obvious or screwed something up.

Cheers,
Martin

On 13-12-23 08:29 AM, G. Ken Holman wrote:
At 2013-12-23 08:16 -0800, Martin Holmes wrote:
Hi all,

I'm doing an identity transform with Saxon 9.5.1.2 (HE, PE and EE all
do the same) on a TEI file with embedded examples in the Examples
namespace:

<TEI xmlns="http://www.tei-c.org/ns/1.0"; version="5.0">
[...]
<div>
<egXML xmlns="http://www.tei-c.org/ns/Examples"; valid="true">
  For more information, consult the
  <ref target="mol:linking#linking_graphics"> guide to
  linking graphic content</ref>.</egXML>
</div>
[...]
</TEI>

In the output, Saxon generates unwanted namespace prefixes, like this:

<_0:egXML xmlns:_0="http://www.tei-c.org/ns/Examples"; valid="true">
  For more information, consult the
  <_0:ref target="mol:linking#linking_graphics"> guide to
  linking graphic content</_0:ref>.</_0:egXML>

This is even though I have exclude-result-prefixes="#all", and it
happens whether or not I define a prefix in the root stylesheet
element for the Examples namespace.

What am I missing?

That exclude-result-prefixes= has no impact on namespaces in input
trees, it only prunes the stylesheet tree literal result elements of
unwanted namespaces (though the actual prohibition typically happens
during serialization, conceptually it is as if the namespaces were
pruned from the stylesheet tree).

How would I get output that looks exactly like the input?

Have you considered reconstituting each element explicitly with no prefix?

   <xsl:element name="{name()}" namespace="{namespace-uri()}">

Though I could imagine it has no effect since it will build an exact
replica of the result tree as a copy.  If you know that what you want is
in the default namespace you could try:

   <xsl:element name="{local-name()}" namespace="{namespace-uri()}">

But, again, it will likely build the exact result tree.

I'm making these suggestions just in case Saxon looks to the result tree
creation for a hint regarding serialization.

The specification doesn't provide such control over serialization, so
Saxon is within its rights to do what it wants.  You could look in the
Saxon documentation for a private extension that would govern the rules.

I hope this helps.

Happy holidays to list readers!

. . . . . . . . Ken

--
Public XSLT, XSL-FO, UBL & code list classes: Melbourne, AU May 2014 |
Contact us for world-wide XML consulting and instructor-led training |
Free 5-hour lecture: http://www.CraneSoftwrights.com/links/udemy.htm |
Crane Softwrights Ltd.            http://www.CraneSoftwrights.com/s/ |
G. Ken Holman                   mailto:gkholman(_at_)CraneSoftwrights(_dot_)com 
|
Google+ profile: https://plus.google.com/116832879756988317389/about |
Legal business disclaimers:    http://www.CraneSoftwrights.com/legal |


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--