[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Error when params are in Xpath expression
I think you forgot to provide the correct example of how I would use the path, you said: > In this case you could have > > document('')/*/trans:tr/tr_string[@str=$str]/*[@lang=$toLang]" But that's how I am using it now. How would I use it if I change the xml format to use 'lang' attribute of a string? Then there is a question of which format would be faster for Xpath to test to see if string exists in a desired language? On Tue, May 12, 2009 at 11:00 AM, Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> wrote: > Dmitri, > > At 07:06 AM 5/12/2009, you wrote: >> >> <!-- get translation of a string --> >> <xsl:template name="translateString"> >> <xsl:param name="str" select="'recent_albums'"/> >> <xsl:param name="toLang"/> >> <xsl:param name="fallback" select="'en'"/> >> >> <xsl:choose> >> <xsl:when test="true()"> >> >> <xsl:value-of >> select="document('')/*/trans:tr/tr_string[@str=$str]/$toLang"/> >> </xsl:when> >> <xsl:otherwise> >> <xsl:value-of select="'not found'"/> >> </xsl:otherwise> >> </xsl:choose> >> </xsl:template> >> >> >> I get errors when running this template. >> If I manually replace the $str and $toLang, then I am getting the >> correct result. >> >> <xsl:value-of >> select="document('')/*/trans:tr/tr_string[@str='recent_images']/ru"/> >> >> What is wrong with my syntax that uses params? Are params allowed in >> Xpath expression? > > Only the "/$toLang" step will give the error. > > You have a couple of options. You could fall back on name testing, and use > the step "/*[name()=$toLang]". > > If you find that cumbersome (and some of us do), you could remodel somewhat. > Instead of using 'de', 'fr', 'en' and so forth as element names: > > <de>Halt<de> > <fr>Arretez</fr> > <en>Stop</en> > > you could reduce them to values on attributes: > > <str lang="de">Halt</str> > <str lang="fr">Arretez</str> > <str lang="en">Stop</str> > > In this case you could have > > document('')/*/trans:tr/tr_string[@str=$str]/*[@lang=$toLang]" > > I hope that helps, > Wendell > > > > ====================================================================== > Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx > Mulberry Technologies, Inc. http://www.mulberrytech.com > 17 West Jefferson Street Direct Phone: 301/315-9635 > Suite 207 Phone: 301/315-9631 > Rockville, MD 20850 Fax: 301/315-8285 > ---------------------------------------------------------------------- > Mulberry Technologies: A Consultancy Specializing in SGML and XML > ======================================================================
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|