[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] Wikipedia on XML
- From: Michael Ludwig <mlu@as-guides.com>
- To: 'XML Developers List' <xml-dev@lists.xml.org>
- Date: Wed, 26 Aug 2009 12:18:45 +0200
Michael Kay schrieb:
>> Your OoxmlProcessor could load the stylesheet using a SAX
>> filter that performs the appropriate identifier replacement
>> on all xmlns or xmlns:xy attributes carrying your standard
>> OOXML namespace.
>
> Actually, you don't have to descend to SAX programming to achieve
> this. With XSLT 2.1 streaming you will be able to write:
>
> <xsl:stylesheet xmlns:xsl=...
> xmlns:oo=...>
>
> <xsl:mode streamable="yes" default-action="copy">
>
> <xsl:template match="oo:*">
> <xsl:element name="{local-name()}" namespace="oo2namespace">
> <xsl:apply-templates select="@*,node()"/>
> </xsl:element>
> </xsl:template>
>
> <xsl:template match="@oo:*">
> <xsl:attribute name="{local-name()}" namespace="oo2namespace"
> select="."/>
> </xsl:template>
>
> </xsl:stylesheet>
I'm sure there is a lot of good new stuff in XSLT 2.1 and it's great to
see that it is moving on. The way I understood Rick, however, which may
well be wrong, was that he did not want to move the OOXML documents to a
new namespace (which your example seems to be doing), but to parametrize
the XSLT stylesheet to cope with the new OOXML namespace his instances
have already been moved into.
So that instead of: <xsl:stylesheet xmlns:ooxml="ooxml-v1" ...
he'd have: <xsl:stylesheet xmlns:ooxml="ooxml-v2" ...
So I think he wants a parameter to alter the namespace declaration in
the XSLT stylesheet, and that is not possible at the XSLT level. It is
possible, however, by changing the source. (A program manipulating a
program to generate a new program.)
Thinking more about it, he'd need a URI Resolver to load all stylesheet
modules through the namespace substitution filter, including those
pulled in via xsl:include and xsl:import.
As the very last resort, my shameless DPH advice would be:
cp -r ooxml-xsl-v1 ooxml-xsl-v2
perl -pi -e 's#old-ooxml-ns-uri#new-ooxml-ns-uri#g' ooxml-xsl-v2/*
That would work instantly.
--
Michael Ludwig
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]