Вызов функции javascript из внешнего файла xslt, включенного в основной файл xslt - PullRequest
0 голосов
/ 10 июня 2011

Мне нужна помощь, пожалуйста. У меня есть JavaScript, определенный в XSLT-файле с именем file_a.xsl. У меня также есть второй XSLT-файл с именем file_b.xslt. Я изо всех сил пытался вызвать функцию sayHello(), определенную в file_a.xsl из file_b.xsl.

Её file_a.xsl:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                xmlns:foo="http://www.cateringportal.com/"
                   extension-element-prefixes="msxsl">



<msxsl:script language="javascript" implements-prefix="foo">
        <![CDATA[
        function sayHello()  
        {  
                return "hello there";  
        }  
        ]]>
      </msxsl:script>

</xsl:stylesheet>

Её file_b.xsl:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:foo="http://www.cateringportal.com/" >
  <xsl:include href="helloXSL.xsl" />

<xsl:output method="html"/>
  <xsl:template match="/">
   <br/>


<xsl:value-of select="foo:sayHello()”/> 

  </xsl:template>
</xsl:stylesheet>

Буду рад помощи в решении этой проблемы.

Ответы [ 2 ]

0 голосов
/ 10 июня 2011

Я упал на это - я думаю, это то, что вам нужно ...
Как показывает xmlns: cosSin - это пространство имен оператор select вызывает функцию, используя cosSin: префикс

Работает также в MS версии 4 ....

...

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt"
  xmlns:cosSin="urn:cosSin">
...
 <text fill="white" stroke="none" font-size="48" text-anchor="middle">       
       <xsl:attribute name="x"><xsl:value-of select="(cosSin:returnX($offSet + ($slicePercentage div 2)) * 600) + 1000" /></xsl:attribute>
       <xsl:attribute name="y"><xsl:value-of select="(cosSin:returnY($offSet + ($slicePercentage div 2)) * 600) + 1000" /></xsl:attribute>
       <xsl:value-of select="$slicePercentage" /> %
     </text>
  ...
<msxsl:script language="JScript" implements-prefix="cosSin">
function returnX(percent) {
  var degree = percent * 3.6;
  return Math.cos(degree*Math.PI/180);
}
function returnY(percent) {
  var degree = percent * 3.6;
  return Math.sin(degree*Math.PI/180);
}
</msxsl:script>
0 голосов
/ 10 июня 2011

Даже если бы я использовал xsl:import лучше, чем xsl:include, ваши trasnforms правильные и отлично работают.Я протестировал его с MSXSL 4.0 , возможно, вы используете устаревшую версию.

Результат:

 <br xmlns:foo="http://www.cateringportal.com/">hello there

В чем проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...