سؤال

هل من الممكن تنفيذ JavaScript مضمّن في XML للمساعدة في تحويلات XSL من جانب العميل (المعتمدة على المتصفح)؟كيف يتم ذلك وهل هو رسمي؟

تسمح كائنات XML DOM الخاصة بـ Microsoft بذلك على جانب الخادم (أي.في ASP/ASP.NET).

إيضاح:لا أقصد تنفيذ البرمجة النصية لـ HTML DOM بعد لقد تم تحويل الوثيقة، ولا أقصد تحويلات XSL بدأت بواسطة JavaScript في المتصفح (على سبيل المثال.ما تعرضه صفحة W3Schools).أنا أشير إلى كتل البرامج النصية الفعلية الموجودة داخل XSL أثناء التحويل.

هل كانت مفيدة؟

المحلول

لتضمين جافا سكريبت للمساعدة في التحويل، يمكنك استخدام <xsl:script>، ولكن إنه محدود لتنفيذ كائنات XML من Microsoft.هنا مثال:

scripted.xml:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="scripted.xsl"?>
<data a="v">
    ding dong
</data>

scripted.xsl:

<?xml version="1.0" encoding="ISO-8859-1"?>
<html xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:script implements-prefix="local" language="JScript"><![CDATA[

    function Title()
    {
        return "Scripted";
    }

    function Body(text)
    {
        return "/" + text + "/";
    }

]]></xsl:script>
<head>
    <title><xsl:eval>Title()</xsl:eval></title>
</head>
<body>
    <xsl:for-each select="/data"><xsl:eval>Body(nodeTypedValue)</xsl:eval></xsl:for-each>
</body>
</html>

النتيجة في Internet Explorer (أو إذا كنت تستخدم MSXML فقط من COM/.NET) هي:

<html>
<head>
    <title>Scripted</titlte>
</head>
<body>
    /ding dong/
</body>
</html>

لا يبدو أنه يدعم بنيات قالب XSL المعتادة وتؤدي إضافة العقدة الجذرية إلى انتقال MSXML إلى نوع ما من وضع المعايير حيث لن يعمل.

لست متأكدًا مما إذا كان هناك أي وظيفة مكافئة في XSL القياسي، لكن يمكنني أن أحلم.

نصائح أخرى

لا أعتقد أنه يمكنك تنفيذ تعليمات JavaScript البرمجية المضمنة داخل مستندات XML.كما ذكر هيليوس، يمكنك إجراء التحويل باستخدام JavaScript.

يتم تضمين JavaScript كـ CDATA في معظم الحالات، والذي يتم استخدامه عادةً بعد لقد حدث تحويل XSL.إذا فهمت الأمر بشكل صحيح، فأنت تريد الحصول على علامة <script> قابلة للتنفيذ في ملف XML الخاص بك.

يمكنك استخدام معلمات وقوالب XSL إذا كنت بحاجة إلى مزيد من التحكم في تحويلاتك.يمكنك تعيين هذه القيم في ملف XSLT ثم تمريرها إلى exec().تدعم موزيلا معلمات الإعداد في XSL، لكني لست متأكدًا من المتصفحات الأخرى.

أيضًا، يعد JavaScript/XSLT عبر المتصفحات بمثابة ألم في الرقبة. واجهة JavaScript/XSLT الخاصة بموزيلا يختلف كثيرا عن آي إي, ، لذلك قد ترغب في الاعتماد على مكتبة مستقلة عن المتصفح مثل XSLT الخاص بـ jQuery.

نعم.إنه يعتمد على المتصفح ولكن يمكنك استخدام Javascript.يوجد برنامج تعليمي صغير ولكنه عملي على w3schools.com.إنه جزء من البرنامج التعليمي XSLT.

الصفحة:

http://www.w3schools.com/xsl/xsl_client.asp

البرنامج التعليمي لـ XSLT:

http://www.w3schools.com/xsl/default.asp

سيكون هذا الموقع أكثر فائدة مني.حظ سعيد!

أشك في أنك ستجد ما تبحث عنه إذا كان "الرسمي" يعني "المعايير". ما تصفه هو لغة البرمجة النصية وكيل المستخدم لتتم تحليلها وتنفيذها أثناء تحليل ورقة النمط.إذا كان هدفك هو تبسيط XSLT عن طريق القيام بالعمل القذر في Javascript، فقد يكون من الأفضل أن تحاول إنشاء XSLT في javascript ثم استخدام مجمّع فئة لتحليل النتيجة عبر محلل XSLT الخاص بالمتصفح.

يعد هذا بالطبع عملًا أكثر بكثير مما قمت بالتوقيع عليه، ولكن إذا كنت مقتنعًا برغبتك في القيام بذلك، فسوف ألقي نظرة على قوالب جافا سكريبت الدقيقة لجون ريسيج لتخزين XSLT الصديق للقوالب ديناميكيًا في جافا سكريبت.

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