لغة XSL (مثل) التعريفية كعرض MVC على النموذج القوي؟

StackOverflow https://stackoverflow.com/questions/301314

  •  08-07-2019
  •  | 
  •  

سؤال

باعتباري من أشد المعجبين بـ XSL، يسعدني جدًا استخدام xsl كعرض في إطار عمل MVC الخاص بنا على ASP.NET.يتم إجراء تسلسل للكائنات الموجودة في النموذج تحت الغطاء باستخدام برنامج تسلسل xml الخاص بـ .NET، ونحن نستخدم قوالب xsl ذرية تمامًا لإعلان كيفية تحويل كل كائن أو خاصية.

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

  <xsl:template match="/Article">
    <html>
      <body>
        <div class="article">
          <xsl:apply-templates />
        </div>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="Article/Title">
    <h1>
      <xsl:apply-templates />
    </h1>
  </xsl:template>

  <xsl:template match="@*|text()">
    <xsl:copy />
  </xsl:template>

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

لكن

على الرغم من أنني أستطيع تجاهل الجانب السلبي للإسهاب في xsl (لأن ذكاء مخطط Visual Studio + المقتطفات رائع بالفعل، والثناء لفريق VS)، فإن الجانب السلبي المتمثل في عدم وجود ذكاء على الكائنات المكتوبة بقوة في النموذج هو في الحقيقة شيء يزعجني.

لقد رأيت عناصر تحكم المستخدم ASP.NET MVC + قيد التنفيذ وبدأت أحبها حقًا، لكنني أتساءل؛

هل هناك طريقة للحصول على نوع ما من التحسس عبر XML الذي نكرره، أو هل تعرف لغة توفر الحرية والتصريح لـ XSL ولكنها تتمتع بمزايا التحسس القوي/الذكاء مثل نماذج الويب/usercontrols/asp.net عرض mvc؟

(ربما أعرف الجواب:"لا"، وسأجد نفسي أستخدم أغنية mvc shizzle الرائعة تمامًا لفيل هاك قريبًا...)

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

المحلول

يمكنك استخدام النموذج المتسلسل (xml) لكائناتك وتحريره باستخدام محرر XML الخاص بـ VS (أنا أستخدم VS2008).

ثم قم بربط مخطط xsd بمستند xml هذا.استخدم المخطط الذي أنشأه xsd,exe بنفسه والذي يستخدمه في التسلسل/إلغاء التسلسل.

سترى أنك تحصل على التحسس مجانًا!

علاوة على ذلك، إذا قمت بتحرير المخطط وإضافة

    <xs:annotation>
      <xs:documentation>
        Helpful Explanation.
      </xs:documentation>
    </xs:annotation>

ثم لن يطالبك محرر XML فقط لك العناصر أو السمات والأسماء والقيم المحتملة، ولكنه سيظهر أيضًا "الشرح المفيد" لكل واحد منهم لديه بيانات التعليقات التوضيحية التي تم إدخالها في مخطط XML.

لمعرفة كيفية ربط مخطط XML بمستند XML، قم إما بالبحث عن مساعدة VS2008 المحلية أو يمكنك العثور عليه على MSDN عبر الإنترنت, ، أو قراءتها هنا.

نأمل أن يكون هذا ساعد.

هتافات،

ديميتري نوفاتشيف

نصائح أخرى

وهذا هو نوع من خارج الموضوع ولكن بعد أن كان أسفل الطريق لخلق CMS مع XSL (ر)، والألم الذي تسببت انصح asp.net بعثة التحقق المشتركة لأسباب أخرى من التحسس. ولكن هذا هو لطيف.

وأنا في الأصل تستخدم XSL لفصل وجهة نظر من البيانات، والذي فعل ذلك. ولكن المصممين وجدت أنه من الصعب الذهاب جدا ومعظمها بسبب كل ذلك يشبه أتش تي أم أل لهم. عن أقواس زاوية وغيرها، وكنت أعاني باستمرار المحادثة، "ولكن لماذا لا يمكن أن لدي وثيقة مع <ط> كل شيء في ذلك"

وكان XSL أيضا slooow، والذاكرة جدا جائع. من ذاكرة الأخطاء المحرجة، وبحلول الوقت الذي حملهم طريقها إلى وقت متأخر. وبالطبع التخزين المؤقت يستخدم فقط المزيد من الذاكرة.

وهناك كان حقا لا ننظر الى الوراء حيث ذهبنا مع MVC، بل هناك خيار إنشاء محرك عرض الخاص بك إذا كنت تشعر المغامرة حقا. لذلك يمكن أن تبقي قليلا من XSL هناك حيث كنت شعرت بالحاجة.

في الحقيقة هو بالفعل هناك مشروع على أساس أنه في MVCContrib المكتبات.

وآمل أن يساعد هذا قرارك

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