Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


Re: [xsl] Xsl:variable content should be empty

From: Abel Braaksma <abel.online@--------->
To:
Date: 4/4/2007 9:46:00 AM
Alan Hale wrote:
<snip />



     <xsl:variable name="link" select="file_link"> </xsl:variable>



<snip />



As you can see, I am trying to construct an html link from the filename
and path held in the <file_link> element.

This works fine when I call the stylesheet in-line or from Javascript in
Internet Explorer, but when I run it with the PHP XSL extension, it
generates a warning: Xsl:variable content should be empty since select
is present. It's only a warning and the output is still as expected, but
clearly I'm doing something wrong.

>From reading up it seems to me this IS an xslt issue rather than a PHP
one. I just don't understand it.




You read up well. The warning is wrong. However, there's a little truth 
in it ;)



You can use an xsl:variable with either a select or with more complex 
content:



<!-- with select -->
<xsl:variable name="x" select="file_link" />

<!-- with sequence constructor -->
<xsl:variable name="x"><xsl:value-of select="file_link" /></xsl:variable>

<!-- or more complex, like this: -->
<xsl:variable name="x">
   <xsl:for-each select="bla">
      <xsl:call-template name="xyz" />
      <xsl:apply-templates select="." />
   </xsl:for-each>
</xsl:variable>

<!-- or with text, like this (discouraged, use select to prevent 
document node to be created) -->

<xsl:variable name="x">Some text here</xsl:variable>



etc.



But you can't mix the two methods. You PHP XSL extension is a bit too 
strict. In XSLT, the following:



<xsl:variable name="x" select="file_link" >  </xsl:variable>



should be regarded equal to:



<xsl:variable name="x" select="file_link" />




That is a lot of text for helping you to understand the issue at hand. 
To help PHP XSL a bit, you can remove the whitespace, or just make it an 
empty tag altogether (like above). Apparently the whitespace is regarded 
as a value, but PHP XSL shouldn't, really.



HTH,
-- Abel Braaksma
  http://www.nuntia.nl


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent