Question

Je suis nouveau à XSL, et donc de nouveau à l'aide de scripts dans le XSL.

Je prends exemple de code (également en utilisant C #) et adapté pour mon propre usage .. mais il ne fonctionne pas.

EDIT: Ce code fonctionne dans Visual Studio .. L'erreur est uniquement généré en oxygène ... je manque encore avoir l'erreur libre de l'oxygène, de sorte que toute idée est appréciée

Le message d'erreur est: L'urne URI: cs-scripts ne permettent pas d'identifier une classe Java externe

Le code pertinent que j'ai est:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
xmlns:tok="urn:cs-scripts">

...
...
...
</xsl:template>


<xsl:variable name="temp">
    <xsl:value-of select="tok:getList('AAA BBB CCC', ' ')"/>
</xsl:variable>

<msxsl:script language="C#" implements-prefix="tok">
    <![CDATA[
    public string[] getList(string str, char[] delim)
  {
     return str.Split(delim, StringSplitOptions.None);
  }

  public string getString(string[] list, int i)
  {
     return list[i];
  }
  ]]>
</msxsl:script>


</xsl:stylesheet>
Était-ce utile?

La solution

La déclaration

xmlns:tok="urn:cs-script"

fait référence à une fonction créée en C # au sein de votre XSLT. L'oxygène est créé en java, et ne peut donc pas charger / compiler la fonction de rappel généré C #.

Si vous voulez supprimer l'erreur en oxygène, puis supprimer la fonction de rappel spécifique C # (qui ne fonctionnera dans un environnement .Net).

Autres conseils

Vous n'avez pas besoin d'une fonction d'extension pour diviser une chaîne en mots.

Il suffit d'utiliser le modèle 1.x FXSL str-split-to-words comme décrit ici .

Parce que FXSL est écrit en XSLT, il fonctionne avec tous les processeurs XSLT 2.0 et 1.x XSLT. - avec MSXML ou tout processeur qui supporte l'extension de node-set() EXSLT (également soutenu par XslCompiledTransform dans .NET)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top