سؤال

أنا جديد على XSL ، وبالتالي جديد في استخدام البرامج النصية داخل XSL.

لقد أخذت مثال رمز (أيضًا باستخدام C#) وتكييفه لاستخدامي الخاص .. لكنه لا يعمل.

تحرير: يعمل هذا الرمز في Visual Studio .. يتم إنشاء الخطأ فقط في Oxygen ... ما زلت أرغب في الحصول على خطأ خالي من الأخطاء في الأكسجين ، لذلك يتم تقدير أي رؤية!

رسالة الخطأ هي: URI URN: لا تحدد CS-Scripts فئة Java الخارجية

الكود ذي الصلة لدي هو:

<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>
هل كانت مفيدة؟

المحلول

الإعلان

xmlns:tok="urn:cs-script"

يشير إلى وظيفة تم إنشاؤها في C# ضمن XSLT الخاص بك. يتم إنشاء Oxygen في Java ، وبالتالي لا يمكن تحميل/تجميع وظيفة الاتصال C# التي تم إنشاؤها.

إذا كنت ترغب في إزالة الخطأ في الأكسجين ، فقم بإزالة وظيفة رد الاتصال المحددة C# (والتي ستعمل فقط في بيئة .NET).

نصائح أخرى

لا تحتاج إلى وظيفة تمديد لتقسيم سلسلة إلى كلمات.

فقط استخدم قالب FXSL 1.x str-split-to-words كما وصفت هنا.

نظرًا لأن FXSL مكتوب في XSLT ، فإنه يعمل مع أي معالجات XSLT 2.0 وللـ XSLT 1.x - مع MSXML أو أي معالج يدعم EXSLT node-set() التمديد (مدعوم أيضًا XslCompiledTransform في الشباك).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top