احصل على اسم الملف باستخدام XSL
سؤال
كيف يمكنني الحصول على اسم الملف باستخدام XSL 1.0؟
حاولت
<xsl:value-of select="base-uri()" />
لكن حصلت على "خطأ فادح! لا يمكن العثور على وظيفة: قاعدة URI"
المحلول
لا يوجد مثل وظيفة XPath، أو امتداد XSLT إلى وظيفة XPath للقيام بذلك في XSLT V1 / XPath V1.
من الممكن تماما أنه لا يوجد ملف، وحتى إذا لم يكن هناك سبب لعنوان XSLT أن يكون لديك اسم الملف (فكر في تحميل محتوى الملفات في مخزن مؤقت، فقم بتحليل المخزن المؤقت في DOM ثم اجتياز DOM إلى XSLT المعالج).
ستحتاج إلى اجتياز اسم الملف في المعالج لتكون متاحة كمعلمة في التحويل.
نصائح أخرى
base-uri()
هو وظيفة XPath 2.0 القياسية, ، لذلك عند تشغيل XSLT 1.0 ستكون هذه الوظيفة غير متوفرة.
في XSLT 1.0 اسم الملف (من ماذا؟) قد يتم تمريره كمعلمة للتحول.
القيام مذكرة أنه ليس من الممكن دائما إنتاج اسم ملف لأحد أساليب أو وثيقة XML - قد يكون كلاهما مقيمين في الذاكرة دون ملف مرتبط.
ليس من الواضح من المشكلة التي يجب أن يتم إنتاج اسم الملف.
فيما يلي كيفية العثور على أسماء الملفات في XPath 2.0 / XSLT 2.0:
اسم الملف المستند الحالي:
base-uri()
اسم ملف وحدة StyleSheet الحالية:
base-uri(document(''))