2015-11-05 4 views
0

Вот мой XSLT:стиля 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 документа. Проблема в том, что его не отображать на страницу. Я считаю, что это связано с использованием style tags в XSLT document.

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 в этом случае, а не бросает ошибку.

Что вам, вероятно, нужно сделать, это добавить параметр style в ваш шаблон header, а затем передать его в стиле с помощью 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> 
Смежные вопросы