Pipeline HOW TO: تحويلات XSLT في تطبيقات .NET

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

320847
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الموجز
يوضح هذا المقال كيفية pipeline تحويلات XSL Transformation (XSLT) في التطبيقات .NET. المصطلح "Pipelining" في سياق تحويلات XSLT ، هو عملية بشكل متزايد هو البيانات في مستند لغة توصيف الموسعة (XML) مصدر تحويلها بواسطة سلسلة صفحات أو أكثر من XSLT لإنشاء الإخراج النهائي المطلوبة وذلك بواسطته. أثناء العملية, يتم استخدام الإخراج الذي تم إنشاؤه بواسطة لكل مرحلة متوسطة في خط الأنابيب تحويل الإدخال إلى المرحلة التالية الزمنية كافة المرحلة الطريقة خلال التحويل الأخيرة التي تنشئ الإخراج الذي تريده.

يمكن استخدام الفئات .NET Framework في System.Xml.XslSystem.Xml.XPath و مساحات الأسماء System.IO برمجياً pipeline تحويلات XSLT في تطبيقات .NET. توفر الأقسام التالية من هذه المقالة إرشادات لمساعدتك في تنفيذ واختبار عملية pipelining تحويلات XSLT في أحد تطبيقات ASP.NET. المفهوم الموضحة يمكن أيضًا تطبيق واستخدامه في أنواع أخرى من التطبيقات .NET يلزم pipeline تحويلات XSLT.

back to the top

إنشاء ثم إعداد تطبيق ASP.NET نموذج

  1. استخدام Visual Studio .NET لإنشاء مشروع Visual Basic Microsoft .NET تطبيق ويب ASP.NET جديد يسمى "XSLTPipelineDemo" (بدون علامتي الاقتباس).
  2. استخدام التعليمات البرمجية التالية لإنشاء مستند XML تدعى "Employees.xml" (بدون علامتي الاقتباس) إلى المشروع وإضافة:
    <?xml version='1.0'?><employees>  <employee>    <employeeId>1</employeeId>    <name>      <given>Nancy</given>      <family>Davolio</family>    </name>  </employee>  <employee>    <employeeId>2</employeeId>    <name>      <given>Andrew</given>      <family>Fuller</family>    </name>  </employee>  <employee>    <employeeId>3</employeeId>    <name>      <given>Janet</given>      <family>Leverling</family>    </name>  </employee>  </employees>					
  3. استخدام التعليمات البرمجية التالية لإنشاء وإضافة ورقة أنماط XSLT التي تسمى "sortEmployees.xslt" (بدون علامتي الاقتباس) إلى المشروع. يحتوي هذا ورقة أنماط على التعليمات البرمجية XSLT لفرز البيانات في مستند XML Employees.xml (بترتيب تنازلي حسب اسم العائلة [الموظف اسم والعائلة] العنصر). الإخراج الذي تم إنشاؤه عند تطبيق ورقة أنماط هذا إصدار تم فرزها من مصدر بيانات XML:
    <?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:param name="sortColumn" select="'family'"/><xsl:param name="sortOrder" select="'descending'"/><xsl:template match="employees">   <employees>   <xsl:apply-templates select="employee/name">         <xsl:sort select="./*[local-name() = $sortColumn]" order="{$sortOrder}"/>               </xsl:apply-templates>     </employees></xsl:template> <xsl:template match="employee/name">  <employee>	  <xsl:copy-of select="parent::node()/*"/>  </employee>  </xsl:template> </xsl:stylesheet>					
  4. استخدام التعليمات البرمجية التالية لإنشاء وإضافة ورقة أنماط XSLT يسمى "EmployeesHTMLTable.xslt" (بدون علامتي الاقتباس) في المشروع. يحتوي هذا ورقة أنماط على التعليمات البرمجية XSLT لتحويل بيانات XML الموظف (المضمنة في مستند XML Employees.xml أو فرزها XML الذي تم إنشاؤه عند تطبيق ورقة أنماط XSLT sortEmployees.xsl على مستند XML Employees.xml) المصدر إلى جدول لغة توصيف النص تشعبي (HTML):
    <?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:template match="employees">	<HTML>	<BODY>	<TABLE BORDER="1">	<TR>	  <TH>Employee ID</TH>	  <TH>Employee Name</TH>	</TR>	<xsl:for-each select="employee">		<TR>  		  <TD>		     <xsl:value-of select="employeeId"/>		  </TD>		  <TD>		     <xsl:value-of select="name/family"/>, <xsl:value-of select="name/given"/>		  </TD>		</TR>	</xsl:for-each>	</TABLE>	</BODY>	</HTML>   </xsl:template> </xsl:stylesheet>					
  5. يمكنك تطبيق كل من صفحات XSLT بشكل مستقل عن الآخر إلى ملف Employees.xml. تطبيق sortEmployees.xsl فرز البيانات الموجودة في ملف Employees.xml أثناء تطبيق employeesHTMLTable.xsl بإنشاء تمثيل جدول HTML مصدر XML. للحصول على تمثيل جدول HTML على البيانات مفروزة في ترتيب تنازلي حسب اسم العائلة, pipeline هذه تحويلات XSLT جهازي (أولاً بتطبيق sortEmployees.xsl إلى ملف Employees.xml ثم قم بتطبيق employeesHTMLTable.xsl على الإخراج التي تم إنشاؤها بواسطة التحويل الأول).
  6. نسخ ولصق التعليمة البرمجية التالية في إجراء الحدث Page_LoadWebForm1.aspx لتنفيذ pipelining تم وصفه مسبقاً:
    'Load the source XML document (Employees.xml) into an XPathDocument object.Dim xmlDoc As New System.Xml.XPath.XPathDocument(Server.MapPath("employees.xml"))'Load the first stylesheet (sortEmployees.xslt) that sorts the data in employees.xml'into an XslTransform object.Dim xslt As New System.Xml.Xsl.XslTransform()xslt.Load(Server.MapPath("sortEmployees.xslt"))'Execute the first transformation and write the interim output (the sorted XML)'to a MemoryStream object. Using an in memory stream (as opposed to a FileStream object) 'to store the interim output generated by the first transformation is a better option from  'a performance standpoint as it avoids unnecessary disk I/O.Dim memStream As New System.IO.MemoryStream()xslt.Transform(xmlDoc, Nothing, memStream)'Reset the MemoryStream internal pointer to point to the 'beginning of the stream. This is required for the following line of 'code to be able to read the data from the memory stream.memStream.Position = 0'Load the interim sorted XML output in an XPathDocument object. 'Notice that a second XPathDocument object is created to do this. 'The reason for this is that the XPathDocument class does not implement a Load 'method (like the System.Xml.XmlDocument class) that can be used to re-load new XML data into an existing 'object instance. While a single XmlDocument object could have been used to execute the two pipelined 'transformations in this sample, it has not been chosen because the XPathDocument is highly optimized for XPath query 'execution and XSLT transformations. It is the recommended interface to use when programatically executing 'XSLT transformations in .NET applications.Dim interimDoc As New System.Xml.XPath.XPathDocument(memStream)'Load the second stylesheet(employeesHTMLTable.xslt)that transforms the sorted data to an HTML table'into the XslTransform object.xslt.Load(Server.MapPath("employeesHTMLTable.xslt"))'Execute the second transformation and stream the output directly to the 'ASP.Net Response object's OutputStream to display the results in the client browser.xslt.Transform(interimDoc, Nothing, Response.OutputStream)					
  7. وحفظ بناء الحل.
back to the top

اختبار التطبيق ASP.NET نموذج

  1. تنفيذ تطبيقات ASP.NET XSLTPiplelineDemo لكي يبدأ التشغيل ثم يعرض WebForm1.aspx في المستعرض.
  2. يتم تشغيل تحويلات XSLT التعليمات البرمجية في إجراء الحدث Page_LoadWebForm1.aspx ويقوم بإنشاء الإخراج في نموذج جدول HTML الذي يعرض فرزها (بترتيب تنازلي استناداً إلى اسم العائلة) سرد الموظفين.
  3. إغلاق إطار المستعرض إلى إنهاء تطبيقات ASP.NET.
back to the top

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 320847 - آخر مراجعة: 01/17/2015 05:30:16 - المراجعة: 3.2

  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
  • kbnosurvey kbarchive kbmt kbbcl kbhowtomaster KB320847 KbMtar
تعليقات