Re: [xsl] XML with Default Namespace

Subject: Re: [xsl] XML with Default Namespace
From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Wed, 1 Aug 2007 10:33:17 +0100
On 8/1/07, Karl Stubsjoen <kstubs@xxxxxxxxx> wrote:
> I'm stuck, I'm trying to write XPATH against an Excel worksheet
> converted to XML, I'm actually trying to transform it into clean and
> nice xml, but darnit, the default namespace is throwing me off!
>
> I'm getting an error from XpathMania which says
> "Document has a default namespace"
>
> When I add the default namespace, then my xpath queries no longer work.
>
> So the XML looks like this:
>
> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
>  xmlns:o="urn:schemas-microsoft-com:office:office"
>  xmlns:x="urn:schemas-microsoft-com:office:excel"
>  xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
>  xmlns:html="http://www.w3.org/TR/REC-html40";>
>  <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
>   <Author>kstubsj</Author>


I'm not too sure what your question is Karl... but if it's "how do I
match elements in a default namespace" then:

In XSLT 2.0 - set the xpath-default-namespace to the namespace and
you're done, eg:

<xsl:stylesheet
  xpath-default-namespace="urn:schemas-microsoft-com:office:spreadsheet"

Or, in XSLT 1.0 (or just because its more explicit) assign the
namespace to a prefix in your stylesheet and update all of your paths:

<xsl:stylesheet
  xxmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"

select="//ss:foo/ss:bar"

cheers
andrew

-- 
http://andrewjwelch.com

Current Thread