Пространство имен 'http://exslt.og/common' ОШИБКА - PullRequest
3 голосов
/ 17 февраля 2011

У меня есть два сервера, мой тестовый сервер «Север 1» подключен без брандмауэра. Сервер 2 (производство) находится за брандмауэром. Ниже приведен код, который выдает следующую ошибку: Пространство имен 'http://exslt.org/common' не содержит никаких функций Эта ошибка отображается только на сервере 2. Если я пытаюсь перейти к http://exslt.org/common в любом из браузеров, страницы там нет.

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ext="http://exslt.org/common"
 xmlns:my="my:my"  extension-element-prefixes="ext my">

Я получил приведенный выше код от очень полезного человека по stackoverflow, и я на 95% работал на Serer2, но сейчас я просто получаю ошибку остальная часть кода ниже: ПОЖАЛУЙСТА, ПОМОГИТЕ Я вырываю волосы, ха-ха.

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ext="http://exslt.org/common"
 xmlns:my="my:my"  extension-element-prefixes="ext my">

 <my:colors>
  <c>#fff</c>
  <c>#ccc</c>
 </my:colors>

 <xsl:variable name="vColors" select="document(\'\')/*/my:colors/*"/>

 <xsl:template match="NewDataSet">
       <html>
            <body>
             <table width="390" style="text-align:left;" cellspacing="0">
                          <tr>
                            <th style="text-align:left;"><span style="font:20px arial;
font-weight:bold;">Agent Name!</span></th>
                            <th style="text-align:center;"><span style="font:20px arial;
font-weight:bold;">State</span></th>
                            <th style="text-align:center;" ><span style="font:20px arial;
font-weight:bold;">Time</span></th>
                           </tr>

                <xsl:variable name="vrtfResult">
                 <xsl:apply-templates>
                   <xsl:sort select="time" data-type="number" order="descending"/>
                 </xsl:apply-templates>
               </xsl:variable>

               <xsl:apply-templates select="ext:node-set($vrtfResult)/tr"/>
             </table>
           </body>
        </html>
 </xsl:template>

 <xsl:template match="tr">
  <xsl:variable name="vPos" select="position()"/>
 <xsl:copy>
  <xsl:copy-of select="@*"/>
  <xsl:attribute name="bgcolor">
    <xsl:value-of select="$vColors[($vPos mod 2)+1]"/>
  </xsl:attribute>

  <xsl:copy-of select="node()"/>
 </xsl:copy>
 </xsl:template>

 <xsl:template match="AgentSales[State=\'Talking Out\']">
   <tr>
      <xsl:apply-templates/>
   </tr>
 </xsl:template>

       <xsl:template match="AgentSales/AgentName">
           <td style="text-align:left;">
               <span style="font:14px arial;
font-weight:bold;text-align:center;"> <xsl:value-of
select="."/></span>
           </td>

       </xsl:template>

       <xsl:template match="AgentSales/State">
           <td style="text-align:center;">
               <span style="font:14px arial;
font-weight:bold;text-align:center;"> <xsl:value-of
select="."/></span>
           </td>

       </xsl:template>

       <xsl:template match="AgentSales/time">
           <td style="text-align:center;">
               <span style="font:14px arial;
font-weight:bold;text-align:center;"> <xsl:value-of
select="."/></span>
           </td>

       </xsl:template>

  <xsl:template match="AgentSales/Reason | AgentSales"/>
</xsl:stylesheet>

1 Ответ

1 голос
/ 17 февраля 2011

Ваша проблема в том, что процессор XSLT, работающий на одном или нескольких серверах, реализует функцию расширения node-set() EXSLT, тогда как другой процессор XSLT (работающий на другом сервере) не реализует это расширение функция.

Решение - использовать один и тот же XSLT-процессор на обоих серверах, если это возможно.

Если это невозможно, выясните пространство имен (и имя) для функции расширения xxx:node-set(), которая поддерживается на втором сервере, и замените:

xmlns:ext="http://exslt.org/common"

с

xmlns:ext="{the-exact-namespace-to-be-used-for-this-XSLT-processor}" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...