[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
RE: [xsl] param vs context for passing arguments
Subject: RE: [xsl] param vs context for passing arguments From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 16 Dec 2009 23:08:50 -0000 |
> This is simple template to replace hyphen with underscore in 'name' > attribute of some element; > > <xsl:template name="ReplaceHyphenWithUnderscore"> > <xsl:analyze-string select="@name" regex="-"> > <xsl:matching-substring> > <xsl:text>_</xsl:text> > </xsl:matching-substring> > <xsl:non-matching-substring> > <xsl:value-of select="."/> > </xsl:non-matching-substring> > </xsl:analyze-string> > </xsl:template> Your code will be most versatile (reusable) if you write it as a function to operate on any string. > <xsl:function name="f:ReplaceHyphenWithUnderscore" as="xs:string"> <xsl:param name="input" as="xs:string"/> > <xsl:analyze-string select="$input" regex="-"> > <xsl:matching-substring> > <xsl:text>_</xsl:text> > </xsl:matching-substring> > <xsl:non-matching-substring> > <xsl:value-of select="."/> > </xsl:non-matching-substring> > </xsl:analyze-string> > </xsl:template> > Then you can write, for example > > <xsl:template match="xsd:element[<some condition here>]"> > <xsl:value-of name="f:ReplaceHyphenWithUnderscore(@name)"/> > (...) > </xsl:template> > Having said that, this particular operation can be achieved by a single call of translate(): > <xsl:function name="f:ReplaceHyphenWithUnderscore" as="xs:string"> <xsl:param name="input" as="xs:string"/> <xsl:sequence select="translate($in, '-', '_')"/> > </xsl:template> Regards, Michael Kay http://www.saxonica.com/ http://twitter.com/michaelhkay
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] param vs context for pass, David Carlisle | Thread | Re: [xsl] param vs context for pass, Piotr Dobrogost |
Re: [xsl] param vs context for pass, David Carlisle | Date | Re: [xsl] retaining entity declarat, a kusa |
Month |