Toon posts:

[XSLT] Bug in extensions bij MSXSL?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer een embedded javascript aan te roepen in xslt, maar het is verboden om meer dan 1 xslt $variabele mee te geven! 1 variabele mag wel. Gewoon 2 getalletjes meegeven mag ook. Wie weet er een workaround?

Let op:
Het javascript:

<msxsl:script language="javascript" implements-prefix="adlib">
<![CDATA[
function Test(val, val2)
{
val = val + val2
return val;
}
]]>
</msxsl:script>

De aanroep vanuit xslt:
<xsl:variable name="value" select="nummer" />
<xsl:variable name="value2" select="nummer" />
<xsl:value-of select="iets:Test($value, $value2)" />

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 23:45
't ligt echt niet aan de xslt standaard, dus die topic titel is ook een beetje te ruime gekozen.

Het volgende werkt bij mij onder sabletron perfect:
de xsl
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:func="http://www.exslt.org/functions"
   xmlns:my="http://gingerall.org/sablot/myfunc"
   extension-element-prefixes="func"
   exclude-result-prefixes="my">
     
   <xsl:output method="xml" indent="yes"/>
     
   <func:script implements-prefix="my" language="javascript"><![CDATA[
     
   function test(val, val2)
   {
     result = val + val2;
     return result;
   }
     
   ]]>
   <xsl:fallback>
     <xsl:text>JS extension no supported!</xsl:text>
   </xsl:fallback>
   </func:script>


   <xsl:template match="/root">
     <root>
      <xsl:variable name="value" select="1" />
      <xsl:variable name="value2" select="1" />
      <xsl:value-of select="my:test($value, $value2)" />     
     </root>
   </xsl:template>
       
     
</xsl:stylesheet>

de xml
code:
1
2
<?xml version="1.0"?>
<root />

Geeft bij mij keurig het verwachte resultaat
code:
1
2
<?xml version="1.0" encoding="UTF-8"?>
<root>2</root>

<edit>
wow, ik ben mbravenboer voor :P
</edit>

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Allereerst zoals freak007 zeer terecht opmerkt gaat het hier om een implementatie van een XSLT processor. XSLT is slechts een taal en het moet wel heel gek lopen als er in een taal een bug zit :+ . Er zit dus wellicht een bug in het extensions mechanisme van MSXSL en daarom heb ik je topic-titel maar even wat aangepast :) .

Helaas werk ik niet met MSXSL, dus ik kan niet nagaan of er ook echt een probleem is. In de processor van Apache: Xalan, werkt het in ieder geval prima (en zal freak007 laat zien ook in Sabletron).
wow, ik ben mbravenboer voor :P
Ik heb ook nog een offline leven idd ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
*zucht* ik had het kunnen weten... microsoft weer... Maar wat is nu een goede oplossing als je afhankelijk bent van een win2k server met msxml4 ? Kan ik die andere extensions ook gebruiken? Zo ja, wat moet ik daarvoor installeren?

Verwijderd

MSXML4 is een volledige XSLT/XPath implementatie, dus dat ze iets hebben weggelaten lijkt me niet voor de hand liggend. Dat er veel bugs in de XML parser zitten is goed mogelijk, de trackrecord van de MSXML parsers zijn dat om de 2 maanden zowat een SP uitkomt met honderden bugfixes. Wat veelal helpt is gewoon OF in de XML newsgroups van MS dit posten (op news.microsoft.com) of rapporteren aan MS. De XML groep die de parser maakt is zeer actief dus wellicht krijg je van die developers zelf antwoord.

Je weet ook zeker dat je die parser aanroept en niet de flutxml parser die met IE5+ wordt geinstalleerd? Deze kunnen side by side worden geinstalleerd nl.