RE: [xsl] "xmlns" problem for transform

Subject: RE: [xsl] "xmlns" problem for transform
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 4 Aug 2005 11:14:06 +0100
> Then, how can I merge the template with my main template? I need them 
> working as one program.

Think pipelines. First stage (optional): convert everything to the correct
namespace. Second stage: do the real processing.

You can implement a pipeline either within a single stylesheet or with a
series of stylesheets linked at application level. In the first approach,
you typically do:

<xsl:variable name="output-of-phase-1">
  <xsl:apply-templates select="/" mode="phase-1"/>
</xsl:variable>

<xsl:variable name="output-of-phase-2">
  <xsl:apply-templates select="xx:node-set($output-of-phase-1)"
mode="phase-2"/>
</xsl:variable>

<xsl:template match="/">
  <xsl:copy-of select="$output-of-phase-N"/>
</xsl:template>

Michael Kay
http://www.saxonica.com/

> 
> cheers,
> Chenzhou
> 
> Michael Kay wrote:
> 
> >It's nothing to do with the presence or absence of a schema, 
> it's all to do
> >with the fact that X in namespace N is completely unrelated to X in
> >namespace N2, or X in no namespace.
> >
> >You shouldn't get yourself into this situation where the 
> same vocabulary of
> >local names is used in more than one namespace. But if you 
> do (as RSS users
> >do) the best way is to write your transformation on the 
> assumption that the
> >names are in a namespace, and then write a preprocessing 
> transformation
> >where necessary to put them in that namespace. This is 
> essentially a variant
> >on the identity transform:
> >
> ><xsl:template match="*[namespace-uri()='']">
> >  <xsl:element name="{local-name()}" namespace="the.real.namespace">
> >    <xsl:copy-of select="@*"/>
> >    <xsl:apply-templates/>
> >  </xsl:element>
> ></xsl:template>
> >
> >Michael Kay
> >http://www.saxonica.com/
> > 
> >
> >  
> >
> >>-----Original Message-----
> >>From: Chenzhou Cui [mailto:ccz@xxxxxxxxx] 
> >>Sent: 03 August 2005 21:29
> >>To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >>Subject: Re: [xsl] "xmlns" problem for transform
> >>
> >>Dear Joris:
> >>
> >>Thank you very much! Now the problem is PARTLY solved. After 
> >>I add the 
> >>non-default namespace for my xslt filter and all needed prefix, the 
> >>filter works well with schema assigned data files. However, 
> >>it can not 
> >>transform files without schema. An opposite problem to before.
> >>
> >>How can I do?
> >>
> >>cheers,
> >>
> >>Joris Gillis wrote:
> >>
> >>    
> >>
> >>>Hi,
> >>>
> >>>Tempore 21:02:56, die 08/03/2005 AD, hinc in 
> >>>xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit Chenzhou Cui 
> >>>      
> >>>
> >><ccz@xxxxxxxxx>:
> >>    
> >>
> >>>>it can't transform
> >>>>the body of sample file with "schema" assigned.
> >>>>        
> >>>>
> >>>As the post's subject indicates, this is a 
> >>>      
> >>>
> >>namespace-related problem 
> >>    
> >>
> >>>indeed.
> >>>
> >>>The schema sets the default namespace to 
> >>>"http://www.ivoa.net/xml/VOTable/v1.1";, you need to define in your 
> >>>xslt a namespace with this uri and a chosen prefix (I know 
> >>>'xmlns="http://www.ivoa.net/xml/VOTable/v1.1";' is already 
> >>>      
> >>>
> >>present; you 
> >>    
> >>
> >>>need to add another non-default namespace declaration). e.g. 
> >>>'xmlns:VOT="http://www.ivoa.net/xml/VOTable/v1.1";'
> >>>
> >>>Next step is to find all element names in any xpath expression or 
> >>>pattern in your xslt and add the prefix.
> >>>
> >>>e.g. <xsl:for-each select="//RESOURCE/TABLE/FIELD" /> becomes
> >>>
> >>><xsl:for-each select="//VOT:RESOURCE/VOT:TABLE/VOT:FIELD"/>
> >>>
> >>>regards,
> >>>      
> >>>
> >>-- 
> >>============================================================
> >>Chenzhou Cui  (Chinese Virtual Observatory: China-VO)
> >>National Astronomical Observatory | Tel: (8610)64841695
> >>Chinese Academy of Sciences       | FAX: (8610)64878240
> >>20A Datun Road, Chaoyang District | Email: ccz@xxxxxxxxx
> >>Beijing 100012, China             | WWW: www.lamost.org/~cb
> >>============================================================
> >
> >  
> >
> 
> -- 
> ============================================================
> Chenzhou Cui  (Chinese Virtual Observatory: China-VO)
> National Astronomical Observatory | Tel: (8610)64841695
> Chinese Academy of Sciences       | FAX: (8610)64878240
> 20A Datun Road, Chaoyang District | Email: ccz@xxxxxxxxx
> Beijing 100012, China             | WWW: www.lamost.org/~cb
> ============================================================

Current Thread