message d'erreur L'URI ne permet pas d'identifier une classe Java externe
-
27-09-2019 - |
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 ! p>
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>
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)