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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] changing value of xi:incl, Nancy Brandt | Thread | RE: [xsl] changing value of xi:incl, Nancy Brandt |
RE: [xsl] changing value of xi:incl, Nancy Brandt | Date | RE: [xsl] changing value of xi:incl, Nancy Brandt |
Month |