2015-11-05 97 views
0

這裏是我的XSLT:風格標籤不渲染

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" encoding="UTF-8" omit-xml-declaration="yes" doctype-system="about:legacy-compat" /> 
     <xsl:template match="/"> 
<html> 
<xsl:call-template name="header"> 
<xsl:with-param name="title">Strip Club List - Top 100 
<xsl:choose> 
<xsl:when test="/*/general/viewmethod='numcomments'"> 
    Highest Number of Comments 
</xsl:when> 
<xsl:when test="/*/general/viewmethod='numreviews'"> 
    Highest Number of Reviews 
</xsl:when> 
<xsl:when test="/*/general/viewmethod='highestreviews'"> 
    Highest Rating 
</xsl:when> 
<xsl:when test="/*/general/viewmethod='numlikes'"> 
    Highest Number of Likes 
</xsl:when> 
<xsl:when test="/*/general/viewmethod='numdislikes'"> 
    Highest Number of Dislikes 
</xsl:when> 
<xsl:when test="/*/general/viewmethod='numfollowers'"> 
    Highest Number of Followers 
</xsl:when> 
</xsl:choose> 

<xsl:value-of select="/*/locations/name" /></xsl:with-param> 
    <xsl:with-param name="stylesheets">fonts.css,core.css,state.css,top.css</xsl:with-param> 
    <xsl:with-param name="scripts">core.js,state.js</xsl:with-param> 
    <xsl:choose> 
    <xsl:when test="/*/general/viewmethod='numcomments'"> 
     <style> 
      .linked_location .rating { 
       right: 110px;   
      } 
     </style> 
    </xsl:when> 
    <xsl:when test="/*/general/viewmethod='numreviews'"> 
     <style> 
      .linked_location .rating { 
       right: 100px;   
      } 
     </style> 
    </xsl:when>  
    </xsl:choose> 
    </xsl:call-template> 
    <body> 
    <div id="body"></div> 
    </body> 
    </html> 
    </xsl:template> 
    </xsl:stylesheet> 

它在HTML文檔的頭部被渲染。問題是它沒有渲染到頁面上。我相信這與在XSLT document中使用style tags有關。

XML:

<root> 
    <general> 
<viewmethod>numreviews</viewmethod> 
</general> 
</root> 

我也只是嘗試:

<xsl:choose> 
<xsl:when test="/*/general/viewmethod='numcomments'"> 
    <style> 
     .linked_location .rating { 
      right: 110px;   
     } 
    </style> 
</xsl:when> 
<xsl:when test="/*/general/viewmethod='numreviews'"> 
    &lt;style&gt; 
     .linked_location .rating { 
      right: 100px;   
     } 
    &lt;/style&gt; 
</xsl:when> 
<xsl:when test="/*/general/viewmethod='highestreviews'"> 
    &lt;style&gt; 
     .linked_location .rating { 
      right: 100px;   
     } 
    &lt;/style&gt; 
</xsl:when> 
<xsl:when test="/*/general/viewmethod='numlikes'"> 
    &lt;style&gt; 
     .linked_location .rating { 
      right: 90px;   
     } 
    &lt;/style&gt; 
</xsl:when> 
<xsl:when test="/*/general/viewmethod='numdislikes'"> 
    &lt;style&gt; 
     .linked_location .rating { 
      right: 90px;   
     } 
    &lt;/style&gt; 
</xsl:when> 
<xsl:when test="/*/general/viewmethod='numfollowers'"> 
    &lt;style&gt; 
     .linked_location .rating { 
      right: 90px;   
     } 
    &lt;/style&gt; 
</xsl:when> 
</xsl:choose> 

這裏是我的header template

<xsl:template name="header"> 
<xsl:param name="title" /> 
<xsl:param name="keywords" /> 
<xsl:param name="description" /> 
<xsl:param name="stylesheets" /> 
<xsl:param name="scripts" /> 
<xsl:param name="emp" /> 
<head> 
<xsl:if test="string-length($keywords) &gt; 0"><meta name="keywords" content="{$keywords}" /></xsl:if> 
<xsl:if test="string-length($description) &gt; 0"><meta name="description" content="{$description}" /></xsl:if> 
<xsl:if test="string-length($stylesheets) &gt; 0"><xsl:call-template name="headercss"><xsl:with-param name="stylesheets" select="$stylesheets" /></xsl:call-template></xsl:if> 
<xsl:if test="string-length($scripts) &gt; 0"><xsl:call-template name="headerjs"><xsl:with-param name="scripts" select="$scripts" /></xsl:call-template></xsl:if> 
<script src="http://domain/www/delivery/i.php?id=13&#38;blockcampaign=1&#38;target=_blank"></script> 
<xsl:if test="$emp &gt; 0"> 
<link rel="stylesheet" type="text/css" href="/emp/style.css" /> 
<script src="/emp/gl.js"></script> 
<script src="/emp/tween.js"></script> 
<script src="/emp/emp.js"></script> 
</xsl:if> 
<title><xsl:value-of select="$title" /></title> 

</head> 
</xsl:template> 

感謝

+0

http://stackoverflow.com/help/mcve –

+0

@ michael.hor257k請看更新的問題 – jkushner

+0

你真的不明白的問題不能轉載只有該片段去? –

回答

0

正如評論xsl:choose提到不能是xsl:call-template的孩子。有關語法,請參閱http://www.w3.org/TR/xslt#named-templates。在這種情況下,您使用的XSLT處理器可能僅僅是忽略了xsl:choose,而不是拋出錯誤。

您可能需要做的是在header模板中添加一個style參數,然後以類似於其他參數的方式使用xsl:with-param傳遞樣式。

試試這個XSLT作爲瘦身例如:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" encoding="UTF-8" omit-xml-declaration="yes" doctype-system="about:legacy-compat" /> 

<xsl:template match="/"> 
    <html> 
     <xsl:call-template name="header"> 
      <xsl:with-param name="title">Test</xsl:with-param> 
      <xsl:with-param name="keywords" select="/root/general/viewmethod" /> 
      <xsl:with-param name="style"> 
       <xsl:choose> 
       <xsl:when test="/*/general/viewmethod='numcomments'"> 
        <style> 
         .linked_location .rating { 
          right: 110px;   
         } 
        </style> 
       </xsl:when> 
       <xsl:when test="/*/general/viewmethod='numreviews'"> 
        <style> 
         .linked_location .rating { 
          right: 100px;   
         } 
        </style> 
       </xsl:when>  
       </xsl:choose> 
      </xsl:with-param> 
     </xsl:call-template> 
     <body> 
      <div id="body"></div> 
     </body> 
    </html> 
</xsl:template> 

<xsl:template name="header"> 
    <xsl:param name="title" /> 
    <xsl:param name="keywords" /> 
    <xsl:param name="style" /> 
    <head> 
     <xsl:if test="string-length($keywords) &gt; 0"><meta name="keywords" content="{$keywords}" /></xsl:if> 
     <xsl:copy-of select="$style" /> 
     <title><xsl:value-of select="$title" /></title> 
    </head> 
    </xsl:template> 
</xsl:stylesheet>