سؤال

لدي xslt متعددة xsl:imports وأريد دمجها كلها في واحد ملف xslt.

وهو الحد من النظام نحن نستخدم حيث يمر حول نمط xsl كما كائن سلسلة المخزنة في الذاكرة.هذا هو تنتقل إلى الجهاز البعيد حيث يؤدي هذا التحول.لأنه لا يتم تحميلها من القرص href الروابط المكسورة ، لذلك نحن بحاجة إلى إزالة xsl:imports من الأنماط.

هل هناك أي أدوات هناك التي يمكن أن تفعل هذا ؟

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

المحلول

يمكنك استخدام نمط XSL دمج صفحات الأنماط الخاصة بك.ومع ذلك ، فإن هذا هو ما يعادل باستخدام xsl:تشمل عنصر لا xsl:استيراد (كما Azat Razetdinov قد أشار بالفعل).يمكنك الاطلاع على الفرق هنا.

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

<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                version="1.0">

<xsl:template match="xsl:include">
  <xsl:copy-of select="document(@href)/xsl:stylesheet/*"/>
</xsl:template>

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>

أول قالب يستبدل كل xsl:تشمل مع إدراج الأنماط باستخدام وظيفة وثيقة ، مما يقرأ في الملف المشار إليه في السمة href.الثاني القالب هو تحول الهوية.

لقد اختبرت ذلك مع Xalan ويبدو أن تعمل بشكل جيد.

نصائح أخرى

فمن المستحيل أن تشمل المستوردة stylsheets في الملف الرئيسي دون كسر استيراد الأسبقية.على سبيل المثال ، يمكنك تحديد أعلى مستوى متغير في الأنماط المستوردة وإعادة تعريفها في الملف الرئيسي.إذا قمت بدمج الملفات اثنين في واحد, سوف تحصل على اثنين من المتغيرات تحمل نفس الاسم و استيراد الأسبقية ، والذي سيؤدي في خطأ.

الحل هو استبدال اثنين xsl:الواردات مع xsl:تشمل وحل أي الصراعات.بعد أن كنت آمنة محل xsl:وتشمل التعليمات مع المقابلة ملفات محتويات لأن هذا هو ما XSLT المعالج لا:

إدراج يعمل في XML شجرة المستوى.الموارد الموجودة من قبل السمة href قيمة تحليل كما مستند XML والأطفال من xsl:الأنماط عنصر في هذه الوثيقة محل xsl:تشمل العناصر بما في ذلك الوثيقة.حقيقة أن قالب القواعد أو التعاريف المدرجة لا يؤثر على الطريقة التي يتم معالجتها.

دليل دمج المحتمل أن يكون الخيار الأفضل.

الاعتبار الرئيسي المحتمل أن يكون للتأكد من أن المنطق مطابقة قوالب يعمل في الجمع بين الأنماط.

لماذا تريد هذا ؟ أنهم عادة فصل لسبب أنس (في كثير من الأحيان الصيانة)

يمكنك دائما كتابة دمج نفسك قراءة XSL الملفات ، حدد قالب البنود كنت مهتما في الكتابة إلى سيد جديد ملف XSL...

 import multiple xsl in single xsl

      <xsl:import href="FpML_FXOption_Trade_Template1.xsl"/>
      <xsl:apply-imports/>

<calypso:keyword>
                <calypso:name>DisplayOptionStyle</calypso:name>
<calypso:value>Vanilla</calypso:value>
</calypso:keyword>

           <xsl:import href="FpML_FXOption_Trade_Template2.xsl"/>
           <xsl:apply-imports/>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top