RE: [xsl] changing value of xi:include's href variable during compilationg with XSLTPROC

Subject: RE: [xsl] changing value of xi:include's href variable during compilationg with XSLTPROC
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 6 Nov 2007 15:34:06 -0000
Well, it just needs a bit more string manipulation: test for the "#" using
contains(), extract the stuff before the "#" using substring-before() and
the stuff after using substring-after(), and concatenate the bits together
using concat(). Tedious, but not exactly difficult.

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

> -----Original Message-----
> From: Nancy Brandt [mailto:nancy_brndt@xxxxxxxxx] 
> Sent: 06 November 2007 15:13
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] changing value of xi:include's href 
> variable during compilationg with XSLTPROC
> 
> Hi dear Michael,
> 
> First of all, thank you for the suggestion. This template did 
> work with a little bit of modification:
> <xsl:template match="xi:include">
>   <xi:include>
>     <xsl:copy-of select="@*"/>
>     <xsl:attribute name="href">
>       <xsl:copy-of select="@*"/>
>       <xsl:value-of select="concat(@*, '.online')"/>
>     </xsl:attribute>
>   </xi:include>
> </xsl:template>
> 
> So that during compilation a file name in xi:include href 
> construction gets the ".online" suffix. But here is a problem:
> In my source XML, there a couple of instance of the following 
> href formats:
> 
> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude";
>   href="voip_features_operation.xml#sect_tel_op_rad"/>
> 
> where #sect_tel_op_rad is a specific section withing the 
> voip_features_operation.xml. My question is how do I further 
> customize the above template in order to change (during 
> compilation) href="voip_features_operation.xml#sect_tel_op_rad"/>
> with
> href="voip_features_operation.xml.online#sect_tel_op_rad"/>
> 
> Thank you very much in advance!!!
> Nancy
> --- Michael Kay <mike@xxxxxxxxxxxx> wrote:
> 
> > > 
> > > And now the tricky part: the xi:include mechanism.
> > If I call
> > > an XML file within another file via xi:include,
> > the compiler
> > > does not turn the included file to
> > <filename>_online.xml.
> > 
> > Well from your description it looks like
> > 
> > <xsl:template match="xi:include">
> >   <xi:include>
> >     <xsl:copy-of select="@*"/>
> >     <xsl:attribute name="href">
> >       <xsl:value-of select="substring-before(., '.')"/>
> >       <xsl:text>_online.xml</xsl:text>
> >     </xsl:attribute>
> >   </xi:include>
> > </xsl:template>
> > 
> > But perhaps I've completely misunderstood the requirement (or the 
> > nature of your difficulty).
> > 
> > Michael Kay
> > http://www.saxonica.com/
> > 
> > > 
> > > This is a problem if the called file contains
> > macros, for
> > > example a macro for inserting graphics. The macro
> > is not
> > > processed, and it does  not turn to a mediaobject.
> > > 
> > > What I would like to have is a kind of a
> > template/mechanism
> > > which will automatically substitute all instances
> > of
> > > xi:include href="myfile.xml" with xi:include 
> > > href="myfile_online.xml" during the first step of
> > compilation
> > > with XSLTPROC. 
> > > 
> > > Is it possible to create such?
> > >  Please, advise...
> > > 
> > > Thank you very much in advance!!!!
> > > My best wishes,
> > > Nancy
> > > 
> > > __________________________________________________
> > > Do You Yahoo!?
> > > Tired of spam?  Yahoo! Mail has the best spam
> > protection
> > > around http://mail.yahoo.com
> > 
> > 
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection 
> around http://mail.yahoo.com 

Current Thread