2011-05-25 36 views
1

我有以下XSLT文件插入測試到XSLT文件,以確保沒有值爲空

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]> 
<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxml="urn:schemas-microsoft-com:xslt" 
    xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets" xmlns:tagsLib="urn:tagsLib" xmlns:BlogLibrary="urn:BlogLibrary" xmlns:UCommentLibrary="urn:UCommentLibrary" xmlns:uForum="urn:uForum" xmlns:uForum.raw="urn:uForum.raw" 
    exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets tagsLib BlogLibrary UCommentLibrary uForum uForum.raw "> 
    <xsl:output method="xml" omit-xml-declaration="yes"/> 
    <xsl:param name="currentPage"/> 
    <xsl:variable name="blognode" select="umbraco.library:GetXmlNodeById(1187)" /> 
    <xsl:variable name="today" select="umbraco.library:CurrentDate()" /> 
    <xsl:variable name="later" select="umbraco.library:DateAdd($today, 'd', -3)" /> 
    <xsl:variable name="count" select="4" /> 


    <xsl:template match="/"> 
    <div id="slider" class="news_banner" > 
     <xsl:for-each select="$blognode/ancestor-or-self::*//BlogPost [@isDoc and umbraco.library:DateGreaterThanOrEqual(PostDate, $later) ]"> 
     <xsl:sort select="pageViewCount" data-type="number" order="descending" /> 
     <xsl:if test="blogImage != ''"> 
      <xsl:variable name="crop" select="umbraco.library:GetMedia(blogImage, 0)/crops/crops/crop [@name='NewsBanner']" /> 
      <xsl:if test="$crop/@url != '' and position() &lt;= $count" > 
      <a href="{umbraco.library:NiceUrl(@id)}"><img src="{$crop/@url}" alt="{@nodeName}" title="#htmlcaption{@id}" /></a> 
      </xsl:if> 
     </xsl:if> 
     </xsl:for-each> 
    </div> 
    <xsl:for-each select="$blognode/ancestor-or-self::*//BlogPost [@isDoc and umbraco.library:DateGreaterThanOrEqual(PostDate, $later) ]"> 
     <xsl:sort select="pageViewCount" data-type="number" order="descending" /> 
     <xsl:if test="blogImage != ''" > 
     <xsl:variable name="crop" select="umbraco.library:GetMedia(blogImage, 0)/crops/crops/crop [@name='NewsBanner']" /> 
     <xsl:if test="$crop/@url != '' and position() &lt;= $count"> 
      <div id="htmlcaption{@id}" class="nivo-html-caption"><xsl:value-of select="@nodeName" /> - <a href="{umbraco.library:NiceUrl(@id)}">Full Story...</a></div> 
     </xsl:if> 
     </xsl:if> 
    </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

我如何可以插入測試,在這裏,以確保該項目不爲空。

+1

你在說什麼? – 2011-05-25 08:18:44

回答

2

我如何可以插入測試在這裏 確保該條目不是空

取決於什麼是「空白」的意思。

這裏是確定如果一個特定的表達(在此表示爲$var爲方便起見)的值不僅由空白的一般方法:

string-length(normalize-space($var)) > 0 

這可以由更一般的和靈活如果寫爲等價的:

string-length(translate($var, ' &#xA;&#xC;&#9;')) > 0 

以上可以用於檢查$var如果我們對「空白」應該表示的含義有不同的理解,請不要空白。例如:

string-length(translate($var, ' &#xA;&#xC;&#9;&#xA0;')) > 0 

測試如果$var包含的空白字符(空格,新行回車和標籤)和「非易碎空白字符」旁邊的任何其它字符(&#xAO;