2010-02-27 113 views
0

我想在某些SharePoint XSLT結果上做一些突出顯示。 BElow是我得到的XML。 我得到的問題是模板匹配塊與UM的子節點不匹配如果有人能夠看到我出錯的地方,那麼我會很棒。SharePoint XSLT問題 -

謝謝

Chhris

 <rows> 
      <row> 
      <LastModifiedTime>02/25/2010 18:32:25</LastModifiedTime> 
      <RANK>325</RANK> 
      <TITLE>UMUK Win At The Mobile Entertainment</TITLE> 
      <AUTHOR>SVR08-002\Administrator</AUTHOR> 
      <CREATED>02/25/2010 18:32:22</CREATED> 
      <PATH>http://svr08-002:7005/Lists/FrontPageNews/DispForm.aspx?ID=3</PATH> 
      <HitHighlightedSummary>a 
       <c0>UM</c0> UK won the category of Best Music Label 2009 at the 4th annual ME (Mobile Entertainment) Awards C <ddd/> 
      </HitHighlightedSummary> 
      </row> 
     </rows> 

這裏是我到目前爲止的XSLT。

  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 

     <xsl:template match="/"> 

      <table class="ICS_SearchTable" cellpadding="0" cellspacing="0" width="100%"> 
      <xsl:for-each select="rows/row"> 

       <xsl:variable name="Ext"> 
       <xsl:call-template name="get-file-extension"> 
        <xsl:with-param name="path" select="substring-before(PATH, '?')" /> 
       </xsl:call-template> 
       </xsl:variable>  
       <tr> 
       <td width="10%"> 

       </td> 
       <td> 
        <div class="ICS_SearchResultItem"> 
         <div class="ICS_SearchResultItemImage"> 
         <img src="/Style Library/UMIGlobe/Styles/Images/Common/umgi-{$Ext}.png" alt="{$Ext}"/> 
         </div> 
         <div class="ICS_SearchResultItemTitle"> 
            <a href="{PATH}"><xsl:value-of select="TITLE"/></a> 
         </div> 
         <div class="ICS_SearchResultItemDesc"> 
         <xsl:choose> 
         <xsl:when test="HitHighlightedSummary[. != '']"> 
         <xsl:call-template name="HitHighlighting"> 
          <xsl:with-param name="hh" select="HitHighlightedSummary" /> 
         </xsl:call-template> 
         </xsl:when> 
         <xsl:when test="DESCRIPTION[. != '']"> 
          <xsl:value-of select="DESCRIPTION"/>  
         </xsl:when>  
         </xsl:choose> 
         </div> 
         <div class="ICS_SearchResultItemLink"> 
            <a href="{PATH}"><xsl:value-of select="PATH"/></a> - <xsl:value-of select="AUTHOR" /> - <xsl:value-of select="LastModifiedTime"/> 
         <xsl:call-template name="DisplaySize"> 
         <xsl:with-param name="size" select="SIZE" /> 
         </xsl:call-template>           
         </div>                    
          </div>         
       </td> 
       </tr> 
      </xsl:for-each> 
      </table> 
     </xsl:template> 

     <xsl:template name="HitHighlighting"> 
      <xsl:param name="hh" /> 
      <xsl:apply-templates select="$hh"/> 
     </xsl:template> 

     <xsl:template match="ddd"> 
      &#8230; 
     </xsl:template> 
     <xsl:template match="c0"> 
      <b> 
      <xsl:value-of select="."/> 
      </b> 
     </xsl:template> 
     <xsl:template match="c1"> 
      <b> 
      <xsl:value-of select="."/> 
      </b> 
     </xsl:template> 
     <xsl:template match="c2"> 
      <b> 
      <xsl:value-of select="."/> 
      </b> 
     </xsl:template> 
     <xsl:template match="c3"> 
      <b> 
      <xsl:value-of select="."/> 
      </b> 
     </xsl:template> 
     <xsl:template match="c4"> 
      <b> 
      <xsl:value-of select="."/> 
      </b> 
     </xsl:template> 
     <xsl:template match="c5"> 
      <b> 
      <xsl:value-of select="."/> 
      </b> 
     </xsl:template> 
     <xsl:template match="c6"> 
      <b> 
      <xsl:value-of select="."/> 
      </b> 
     </xsl:template> 
     <xsl:template match="c7"> 
      <b> 
      <xsl:value-of select="."/> 
      </b> 
     </xsl:template> 
     <xsl:template match="c8"> 
      <b> 
      <xsl:value-of select="."/> 
      </b> 
     </xsl:template> 
     <xsl:template match="c9"> 
      <b> 
      <xsl:value-of select="."/> 
      </b> 
     </xsl:template> 

     <!-- The size attribute for each result is prepared here --> 
     <xsl:template name="DisplaySize"> 
     <xsl:param name="size" /> 
     <xsl:if test='string-length($size) &gt; 0'>  
     <xsl:if test="number($size) &gt; 0"> 
     - 
      <xsl:choose> 
      <xsl:when test="round($size div 1024) &lt; 1"><xsl:value-of select="$size" /> Bytes</xsl:when> 
      <xsl:when test="round($size div (1024 *1024)) &lt; 1"><xsl:value-of select="round($size div 1024)" />KB</xsl:when> 
      <xsl:otherwise><xsl:value-of select="round($size div (1024 * 1024))"/>MB</xsl:otherwise> 
      </xsl:choose>  
     </xsl:if> 
     </xsl:if> 
     </xsl:template> 

     <xsl:template name="get-file-extension"> 
      <xsl:param name="path" /> 
      <xsl:choose> 
      <xsl:when test="contains($path, '/')"> 
       <xsl:call-template name="get-file-extension"> 
       <xsl:with-param name="path" select="substring-after($path, '/')" /> 
       </xsl:call-template> 
      </xsl:when> 
      <xsl:when test="contains($path, '.')"> 
       <xsl:call-template name="get-file-extension"> 
       <xsl:with-param name="path" select="substring-after($path, '.')" /> 
       </xsl:call-template> 
      </xsl:when> 
      <xsl:otherwise> 
       <!-- SET THE PATH IMAGE SRC --> 
       <xsl:choose> 
       <xsl:when test="$path = 'uk' or $path = 'org' or $path = 'com' or $path = 'net' or $path = 'biz' or $path = 'gov'"> 
        <xsl:text>url</xsl:text> 
       </xsl:when> 
       <xsl:otherwise> 
        <xsl:value-of select="$path" /> 
       </xsl:otherwise> 
       </xsl:choose> 
      </xsl:otherwise> 
      </xsl:choose> 
     </xsl:template> 
     </xsl:stylesheet> 

回答

1

你是什麼意思的「UM的孩子節點」?

也許我錯過了一些東西,但沒有名爲「UM」的節點,只是文本。那麼你的意思是你想要匹配包含文本「UM」的節點......換句話說<c0>UM</c0>

就我而言,當我運行樣式表時,它確實與<c0>節點相匹配,並且寫入了一個<b>節點。

<b>UM</b> UK won the category of Best Music Label 2009 at the 4th annual ME (Mobile Entertainment) Awards C

有什麼理由不爲你工作?