عناصر XSLT

تُعرّف لغة XSLT (لغة تحويلات أوراق الأنماط القابلة للتوسيع) العديد من العناصر لوصف التحويلات التي يجب تطبيقها على المستند. تُدرج هذه المقالة بعضًا من هذه العناصر. للاطلاع على مقدمة عن XSLT، راجع المقالة الرئيسية .

عناصر منطق XSLT

العقدةالوصف/الخصائصحاوية/ أطفالمثال
xsl:apply-templatesيُحدد هذا الخيار إمكانية وجود تطابقات أخرى ضمن تلك العقدة ؛ وفي حال عدم تحديده، سيتم تجاهل أي تطابقات. عند تحديد "select "، سيتم تطبيق القوالب التي تُحدد "تطابقًا" يُناسب نوع العقدة أو السمة المُحددة فقط. أي أن العناصر المُطابقة بواسطة السمة "select " في xsl:apply-templates تُطابق القالب الذي يُطابق نفس العناصر. عند تحديد "mode "، سيتم تطبيق القوالب التي لها نفس "mode" و"تطابق" مُناسب فقط.أي عنصر أب. يمكن أن يحتوي على أي عدد من العناصر الفرعية xsl:sort و xsl:with-param .
<xsl:apply-templates />
xsl:chooseخيارات متعددة. لا توجد سمات.أي عنصر أب. يحتوي على كتل xsl:when وكتلة واحدة كحد أقصى من نوع xsl:otherwise .
<xsl:choose > ... </xsl:choose>
xsl:for-eachيُنشئ حلقة تتكرر لكل تطابق. يُحدد الخيار معايير التطابق.أي عنصر أب. يمكن أن يحتوي على أي ملف XML.
<xsl:for-each select= "input[@name=$name]" > ... </xsl:for-each>
xsl:ifنعم أو لا شروط. يحدد الاختبار معايير الدخول إذا.أي عنصر أب. يمكن أن يحتوي على أي ملف XML.
<xsl:if test= "$type='text' or $type='password'" > ... </xsl:if>
xsl:otherwiseالخيار الافتراضي في حالة عدم استيفاء أي من معايير xsl:when .xsl:choose . يمكن أن يحتوي على أي XML.
<xsl:otherwise > ... </xsl:otherwise>
xsl:stylesheetعنصر من المستوى الأعلى. يظهر مرة واحدة فقط في مستند نمط CSS. يحدد الإصدار إصدار XSLT المستخدم. يحدد xmlns:xsl عنوان URL لهذا المعيار.عنصر المستوى الأعلى. يحتوي على جميع بيانات XML.
<xsl:stylesheet > ... </xsl:stylesheet>
xsl:templateيحدد قوالب المعالجة. المطابقة هي متى يجب استخدام القالب. الاسم يعطي القالب اسمًا يمكن لـ xsl:call-template استخدامه لاستدعاء هذا القالب.xsl:stylesheet . يمكن أن يحتوي على أي ملف XML.
<xsl:template match= "//input" > ... </xsl:template>
xsl:variableيُتيح هذا تعريف متغير. يُمثل `name` اسم المتغير، ويمكن الرجوع إليه لاحقًا باستخدام ` $name. أما `select` فيُمثل قيمة المتغير.أي والد. بدون أطفال.
<xsl:variable name= "type" select= "@type" />
xsl:whenشروط نعم أو لا. يحدد الاختبار معايير الدخول في الشرط.xsl:choose . يمكن أن يحتوي على أي XML.
<xsl:when test= "$type='radio'" > ... </xsl:when>

مثال على ورقة أنماط XSLT باستخدام عناصر منطقية

<xsl:stylesheet > <xsl:template match= "//input" > <xsl:variable name= "type" select= "@type" /> <xsl:variable name= "name" select= "@name" /> <xsl:if test= "$type='text' or $type='password' or $type='radio' or $type='checkbox'" > <xsl:choose ><xsl:when test= "$type='radio'" > <xsl:if test= "not(preceding-sibling::input[@type='radio'])" > <select name= "{@name}" > <xsl:for-each select= "../input[@name=$name]" > <option value= "{@value}" > <xsl:apply-templates /> </option> </xsl:for-each> </select> </xsl:if> </xsl:when><xsl:when test= "$type='text'" > <input name= "{@name}" type= "{@type}" > <xsl:apply-templates /> </input> </xsl:when><xsl:when test= "$type='password'" > <input name= "{@name}" type= "{@type}" > <xsl:apply-templates /> </input> </xsl:when></xsl:choose> </xsl:if> </xsl:template> </xsl:stylesheet>

عناصر إدخال/إخراج ملفات XSLT

العقدةالوصف/الخصائصحاوية/ أطفالمثال
xsl:call-templateيستدعي القالب الذي تم تحديد اسمه. يتطابق الاسم مع الاسم الموجود في xsl:template .أي عنصر أب. الأبناء هم xsl:with-param .
<xsl:call-template name= "lib:make-elem" >
xsl:importيسترجع ملف XSLT آخر. href هو عنوان URI للملف.xsl:stylesheet . لا يوجد عناصر فرعية.
<xsl:import href= "..\Library\FuncLib.xslt" />
xsl:outputيصف هذا كيفية إرجاع البيانات. تحدد الطريقة نوع البيانات المراد إرجاعها. يشير حذف تعريف XML إلى ما إذا كان يجب تضمين علامة XML الأولية. يحدد الترميز كيفية إرجاع البيانات.xsl:stylesheet . لا يوجد عناصر فرعية.
<xsl:output method= "xml" omit-xml-declaration= "yes" encoding= "UTF-8" />
xsl:paramيُحدد هذا المعامل الذي يمكن تمريره إلى القالب باستخدام xsl:call-template .xsl:template . لا يوجد عناصر فرعية.
<xsl:param name= "elem-name" />
xsl:textيُخرج محتوى الوسم.أي والد. لا أطفال.
<xsl:text > ClaimNumber ClaimSeqNumber </xsl:text>
xsl:value-ofيُخرج قيمة متغير. يحدد الأمر select المتغير.أي والد. لا أطفال.
<xsl:value-of select= "$s" />
xsl:with-paramيُحدد هذا الخيار مُعاملًا مُمررًا إلى xsl:call-template . يجب أن يُطابقه xsl:param في القالب. يُحدد name اسم المُعامل، بينما يُحدد select قيمة المُعامل .xsl:call-template . لا يوجد عناصر فرعية.
<xsl:with-param name= "elem-name" select= "'hma:ClaimNumber'" />

يمكن تنفيذ XSLT من جانب العميل في المتصفح عن طريق إضافة سطر مثل التالي إلى ملف XML المصدر ، مباشرة بعد علامة XML الجذرية.

<?xml-stylesheet type="text/xsl" href="family.xsl"?>

هذا موضح في الصفحة http://www.xml.com/pub/a/2000/10/25/msie/index.html

دلالات XSLT الأخرى

رمزمعنىحيثما استخدم
|عامل الاتحاد. يُستخدم لتجميع مجموعات العقد في تعبيرات XPath.حدد سمات العناصر مثل xsl:when و xsl:if و xsl:for-each .
&وأي معيار شرطي أو معيار مطابقة، على سبيل المثال xsl:if.test و xsl:when.test و xsl:template.select و xsl:for-each.select .
<!--ابدأ التعليق.في أي مكان ليس داخل علامة.
-->انتهى التعليق.في أي مكان ليس داخل علامة.
$بداية اسم متغير.في أي مكان في علامة، على سبيل المثال xsl:value-of.select و xsl:variable.name .
name()اسم الوسم الذي تتم معالجته. مفيد إذا كانت معايير المطابقة تحتوي على |رموز الأنابيب (s).أي معيار شرطي أو معيار مطابقة، على سبيل المثال xsl:if.test و xsl:when.test و xsl:template.select و xsl:for-each.select .
@سمة ضمن XML.أي معيار شرطي أو معيار مطابقة، على سبيل المثال xsl:if.test و xsl:when.test و xsl:template.select و xsl:for-each.select .

[ 1 ]

الدوال المعرفة بواسطة XSLT

يمكن أن تظهر الوظائف التالية في العديد من سمات XSLT، مثل xsl:value-of.select و xsl:for-each.select.

وظيفةالوصف/ بناء الجملةمثال
سقفتقوم دالة السقف بإرجاع أصغر عدد صحيح يساوي أو يكون أكبر من القيمة العددية للوسيط العددي.
السقف ( 3.57 )
سلسلةيقوم بدمج سلسلتين نصيتين أو أكثر.
concat ( $ fname , ' ' , $ lname )
يحتوي على [ 2 ]تُرجع القيمة "صحيح" إذا كانت السلسلة الأولى تحتوي على السلسلة الثانية، وإلا تُرجع القيمة "خطأ".
يحتوي على ( 'سلسلة للبحث' , 'إيجاد' )
عددتقوم دالة العد بحساب وإرجاع عدد العقد في مجموعة العقد.
عدد ( العناصر )
أرضيةتقوم دالة الجزء السفلي بإرجاع أكبر عدد صحيح يساوي أو يكون أصغر من القيمة العددية للوسيط العددي.
الطابق ( 3.57 )
مساحة التطبيعيزيل المسافات البيضاء من بداية ونهاية السلسلة
normalize-space ( $ fname )
موضعتُعيد دالة الموضع فهرس العقدة الحالية التي تتم معالجتها بواسطة عنصر xsl:for-each أو xsl:apply-templates، بدءًا من 1 [ 3 ] . لا توجد وسائط.
موضع ()
دائريتقوم دالة التقريب بتقريب العدد إلى أقرب عدد صحيح.
تقريب ( 3.57 )
خيطتقوم دالة السلسلة بتحويل وسيط القيمة إلى سلسلة نصية.
خيط ()
طول السلسلةتُعيد دالة طول السلسلة عدد الأحرف في السلسلة النصية. وسيط السلسلة النصية اختياري. في حال عدم تحديده، يتم استخدام قيمة السلسلة النصية لعقدة السياق افتراضيًا.
طول السلسلة ( 'hello' )
سلسلة فرعيةجزء من قيمة متغيرة. تأخذ الدالة substring ثلاثة معلمات: المتغير المُدخل، والحرف الأول المراد تحديده، وطول السلسلة الناتجة.
substring ( $ dob , 4 , 2 )
سلسلة فرعية بعدتقوم الدالة substring-after بإرجاع جزء من السلسلة المحددة في وسيط السلسلة والذي يأتي بعد السلسلة الفرعية المحددة في وسيط السلسلة الفرعية.
substring-after ( 'In 1814 we took a little trip' , 'we' )
سلسلة فرعية قبلتقوم الدالة substring-before بإرجاع جزء من السلسلة المحددة في وسيط السلسلة والذي يظهر قبل السلسلة الفرعية المحددة في وسيط السلسلة الفرعية.
substring-before ( 'In 1814 we took a little trip' , 'we' )
مجموعتقوم دالة الجمع بجمع وإرجاع القيمة الإجمالية لمجموعة من القيم العددية في مجموعة عقد أو قائمة من القيم.
مجموع ( 1 ، 3 ، 7 ، 12 )
يترجمتأخذ السلسلة في وسيط القيمة، وتستبدل جميع حالات ظهور الأحرف في وسيط السلسلة 1 بأحرف بديلة في نفس الموقع في وسيط السلسلة 2، ثم تعيد السلسلة المعدلة.
ترجمة ( 'band' , 'abcd' , 'ABCD' ) = 'BAnD'

مراجع