سؤال

وأريد إنشاء تعليقات مشروطة في XSLT.

ولكن عند استخدام هذا:

<!-- [If IE7] [endif] -->

وفي <xsl:comment>، XSLT بإزالته من الانتاج عندما يتم تقديمها.

هل هناك أي طريقة لإنشاء تعليقات الشرطية في XSLT؟

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

المحلول

وببساطة استخدام علامة <xsl:comment> وتشمل تعليقك داخل العلامة.

وعلى سبيل المثال:

<xsl:if test="@id = '1'">
  <xsl:comment>
    <![CDATA[[if IE]><![endif]]]>
  </xsl:comment>
</xsl:if>

ترويض ديك Standalones IE متعددة هو المادة كبيرة حول هذا الموضوع.

نصائح أخرى

والحل أعلاه يفترض أن المحتوى داخل التعليق المشروط لا يحتوي على أية معلمات XSLT. في المثال التالي نحن لها $DATA_ROOT_PATH المعلمة التي يجب معالجتها لتعطينا الموقع الصحيح من ملف CSS. في هذه الحالة <xsl:comment/> ليست مناسبة. يجب علينا أن نستخدم <xsl:text/> وتعطيل الانتاج الهروب.

والمثال هنا سوف تشمل ملف CSS إلا إذا نستخدمه IE7.

<xsl:text disable-output-escaping="yes">&lt;!--[if IE 7]&gt;</xsl:text>
  <link rel="stylesheet" type="text/css" href="{$DATA_ROOT_PATH}/resources/css/ie7.css" media="screen"/>
<xsl:text disable-output-escaping="yes">&lt;![endif]--&gt;</xsl:text>

والمثال رمز من شأنه أن يولد الانتاج مثل ذلك إذا $DATA_ROOT_PATH = <م> / المثال :

<!--[if IE 7]>
  <link rel="stylesheet" type="text/css"
        href="/example/resources/css/ie7.css"
        media="screen" />
<![endif]-->

وكانت هذه هي الطريقة الوحيدة وكنت قادرا على الحصول على بلدي أي أنماط ليتم تطبيقها:

    <xsl:comment>[if IE]>
      &lt;link rel="stylesheet" type="text/css" href="ie.css" />
      &lt;![endif]</xsl:comment>

وكان لي للتأكد من عدم وجود مساحة بين بلدي النص وXSL: افتتاح تعليق / علامات إغلاق

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