استفاده از XSLT به منظورفرمت دهی خروجی برنامه های وب دات نت New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 دوشنبه  4  ارديبهشت  1396  2017  Apr.  24   Monday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 استفاده از XSLT در برنامه های وب(بخش سوم)

 مديريت وب

8219

8

4.1

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

استفاده از XSLT در برنامه های وب

استفاده از XSLT در برنامه های وب  ( بخش دوم )

 آنچه تاکنون گفته شده است :

  • بخش اول: جايگاه XSLT به منظور فرمت دهی خروجی برنامه های وب
  • بخش دوم : تغيير لی اوت ، استفاده از چندين تمپليت ، حلقه های تکرار

در بخش سوم اين مقاله به بررسی نحوه انجام عمليات مرتب سازی و ساختارهای تصميم گيری در XSLT  ، خواهيم پرداخت .

 مرتب سازی ( Sorting )
 مرتب سازی در XSLT با افزودن يک و يا چندين عنصر فرزند <xsl:Sort> به عنصر <xsl:apply-templates> و يا  <xsl:for each> محقق می گردد . گرامر استفاده از عنصر فوق ، بصورت زير است :

xsl:sort element syntax

<xsl:sort select="Xpath expression"
       lang ="lang"
      data-type="text or number"
      order = "ascending or descending "
      case-order = "upper-first or lower-first" />

خصلت Select ، باعث انتخاب يک عنصر و يا خصلت می گردد . در صورتيکه بيش از يک عنصر  <xsl:sort> استفاده گردد ، خروجی در ابتدا بر اساس عنصر و يا خصلت مشخص شده در اولين <xsl:sort> مرتب شده و در صورتيکه پس از مرتب سازی ، موارد تکراری وجود داشته باشد ، موارد موجود توسط عنصر و يا خصلت مشخص شده در دومين <xsl:sort> ، مرتب می گردند . خصلت data-type ، مشخص کننده نوع داده ئی است که قصد مرتب سازی آن وجود دارد( عددی و يا حرفی ) . مثلا" در صورتيکه  قصد مرتب سازی اعداد 1 ، 10 ، 11، 5  را داشته باشيم ، نوع data-type می بايست text در نظر گرفته شود . در چنين حالتی خروجی بصورت : 5 ، 11، 10 ، 1 خواهد بود . در صورتيکه مرتب سازی بصورت عددی انجام شود ، مقدار خصلت data-type می بايست number در نظر گرفته شود . در چنين حالتی نتيجه عمليات مرتب سازی  بصورت 11 ، 10 ، 5 ، 1  می باشد . خصلت data-type  دارای مقدار پيش فرض ، text می باشد. خصلت order ، پارامتر صعودی و يا نزولی فرآيند مرتب سازی را مشخص می نمايد. مقدار پيش فرض اين خصلت ascending می باشد . خصلت case-order ، اولويت حروف را مشخص می نمايد (حروف بزرگ و يا کوچک ). مثلا"، در صورتيکه برای خصلت case-order مقدار upper-first در نظر گرفته شده باشد و قصد مرتب سازی داده هائی نظير : A B a b را داشته باشيم ، نتايج بصورت : A a B b خواهد بود . در صورتيکه مقدار خصلت فوق ، lower-first در نظر گرفته شود ، نتيجه عمليات مرتب سازی بصورت : a A b B خواهد بود. مقدار پيش فرض خصلت فوق بستگی به خصلت lang داشته  که زبان سند مورد نظر را مشخص می نمايد. زمانيکه ، برای خصلت lang ، مقدار en در نظر گرفته شود ، خصلت case-order  دارای مقدار پيش فرض، upper-first است .

مثال يک :
هدف : استفاده از عنصر xsl:sort به منظور مرتب سازی  مشخصات دانشجويان بر اساس نام خانوادگی
توضيحات  :  درمثال فوق ،  از فايل XML   زير استفاده شده است ( فايل XML  حاوی نام و نام خانوادگی پنج  دانشجو می باشد ) .

Student  XML file

<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8" ?>
<Students>
     <name>
          <first> علی</first>
          <last> رضائی</last>
     </name>
     <name>
          <first> خسرو </first>
          <last> ايرانی</last>
    </name>
    <name>
         <first>حسين </first>
         <last> ياوری</last>
     </name>
     <name>
           <first>محمد رضا </first>
           <last> خسروی </last>
    </name>
    <name>
            <first> پيمان </first>
            <last>دوستی </last>
    </name>
</Students>

  فايل XSL  استفاده شده برای مثال يک :  

Student  XSL file for sortting

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
     <html>
      <body Dir="rtl">
          <H3 Align="Center"> ليست دانشجويان </H3>
          <table border="1" bgcolor="ٌWhite" dir="rtl" Align="Center">
            <tr>
               <th bgcolor="#336699"><font size="3" color="white"> نام </font></th>
               <th bgcolor="#336699"><font size="3" color="white"> نام خانوادگی </font> </th>
           </tr>
           <xsl:for-each select="Students/name">
             <xsl:sort select="last"/>
                 <tr>
                    <td Align="Center" bgcolor="#F4F4FF"><font size="2"><xsl:value-of select="first"/></font></td>
                    <td Align="Center" bgcolor="#F4F4FF"><font size="2"><xsl:value-of select="last"/></font></td>
                </tr>
          </xsl:for-each>
       </table>
    </body>
   </html>
</xsl:template>
</xsl:stylesheet>

خروجی : پس از مقداردهی خصلت های  DocumentSource و  TransformSource   کنترل سرويس دهنده XML ، به ترتيب به فايل های  XML و  XSL  ، خروجی زير نمايش داده می شود .

ساختار تصميم گيری
در زمان ايجاد يک StyleSheet ،در برخی حالات نيازمند اتخاذ تصميم در رابطه با نحوه نمايش نتايج می باشيم . XSLT دارای عناصری است که با استفاده از آنان می توان کنترل روند پردازش را در Stylesheet انجام داد. هر زبان برنامه نويسی امکان اتخاذ تصميم را از طريق کد نوشته شده در اختيار برنامه نويسان قرار می دهد . XSLT از اين قاعده مستثنی نبوده و امکان تصميم گيری بر اساس شرايط موجود را با استفاده از دو عنصر <xsl:if> و <xsl:choose> فراهم می نمايد . گرامر عمومی دو عنصر فوق، بصورت زير می باشد :

xsl:if element syntax

<xsl:if  test="Boolean expression"

xsl:choose element syntax

<xsl:choose>
       <xsl:when  test="Boolean expression" >
       <xsl:when  test="Boolean expression" >
       <xsl:otherwise>
</xsl:choose>

برای هر دو عنصر <xsl:if> و <xsl:choose> ، عبارت منطقی ( Boolean expression > يک عبارت XPath بوده که به يک مقدار منطقی تبديل خواهد شد.عبارت XPath بر اساس قوانين زير به يک عبارت منطقی تبديل می گردد :

  •  در صورتيکه مقدار عددی بوده و ارزش آن  صفر باشد ، مقدار False در نظرگرفته خواهدشد.برای هر مقدار غيرصفر( مثبت و يا منفی ) ، مقدار True در نظر گرفته می شود .
  •  در صورتيکه مقدار يک رشته  باشد و طول آن بيش از صفر باشد ، مقدار True در نظر گرفته خواهد شد .
  •  در صورتيکه مقدار يک مجموعه گره باشد و  مقدار آن غيرتهی باشد ، مقدار True در نظر گرفته خواهد شد .
  • هر نوع ديگر اشياء بر اساس نوع شی به يک مقدار منطقی تبديل خواهند شد .

مثلا" عبارت :  < "xsl:if test = "name > ، در صورتيکه يک عنصر با نام <name> غيرتهی وجود داشته (عضوء context node ) ، مقدار True و در غير اينصورت مقدار False در نظر گرفته خواهد شد.
عنصر <xsl:if> ، ساده ترين ساختار تصميم گيری ارائه شده در XSLT می باشد. عنصر فوق ، مقدار عبارت را بررسی ( ارائه شده توسط خصلت test ) و در صورتيکه مقدار آن True باشد ، محتويات عنصر <xsl:if> ، بررسی و اجراء خواهند شد .

xsl:if element Example

<xsl:if  test="name" > نام مورد نظر پيدا گرديد</xsl:if>

در مثال فوق ، در صورتيکه عنصر <name> بعنوان فرزندی از  context node وجود داشته باشد ، عبارت " نام مورد نظر پيدا گرديد " ، نمايش داده می شود.
عنصر <xsl:choose> ، نسبت به <xsl:if> امکانات بيشتری را بمنظور اتخاذ تصميم ارائه می نمايد . ساختار فوق، امکان تصميم گيری پيجيده تری را فراهم می نمايد.در عنصر فوق ، می توان از يک گزينه "پيش فرض " ، نيز استفاده نمود .

xsl:choose Example :

<xsl:choose>
   <xsl:when test="salary[number(.) &gt; 2000]" >
يک عدد بزرگ </xsl:when>
   <xsl:when test="salary[number(.) &gt; 1000]" >
يک عدد متوسط </xsl:when>
   <xsl:otherwise>
يک عدد کوچک </xsl:otherwise>
</xsl:choose>

در صورتيکه عنصر <number> ، شامل يک مقدار عددی  بيش از 2000  باشد ، عبارت : "  يک عدد بزرگ " در خروجی  نمايش داده خواهد شد . در صورتيکه مقدار عنصر فوق بيش از 1000 باشد .، عبارت : " يک عدد متوسط " در خروجی نمايش داده می شود. در ساير حالات ، عبارت : " يک عدد کوچک" در خروجی نمايش داده خواهد شد . در مثال فوق از يک  تابع XPath استفاده شده است ( تابع ( ) number ) .تابع فوق،مسئوليت تبديل مقدار عنصر <number>  به يک مقدار عددی را برعهده دارد . فراموش نکنيم که تمامی اطلاعات موجود در يک فايل XML ، صرفا" بصورت  متن بوده و XSLT همواره با داده موجود در يک فايل XML  بصورت text برخورد خواهد کرد( مگراينکه ، با صراحت به XSLT  اعلام گردد که می بايست در اين رابطه تبديلی صورت پذيرد) . در صورتيکه از تابع number استفاده نشود ، XSLT داده موردنظر را بصورت Text بررسی  می نمايد. ( در مثال فوق در مقابل علامت "<"   از "gt " استفاده شده است ).

مثال دو :
هدف : استفاده از عنصر xsl:if به منظور اتخاذ تصميم  و نمايش اطلاعات دانشجو با نام " خسرو ايرانی "
توضيحات  :  درمثال فوق ،  از فايل XML  ارائه شده درمثال يک ( فايل XML  حاوی نام و نام خانوادگی پنج  دانشجو می باشد )  و فايل XSL زير استفاده شده است.

Student  XSL file : If  Example

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
  <html>
    <body Dir="rtl">
      <H3 Align="Center"> ليست دانشجويان </H3>
      <table border="1" bgcolor="ٌWhite" dir="rtl" Align="Center">
        <tr>
          <th bgcolor="#336699"><font size="3" color="white"> نام </font></th>
          <th bgcolor="#336699"><font size="3" color="white"> نام خانوادگی </font> </th>
       </tr>
       <xsl:for-each select="Students/name">
         <xsl:if test="first='خسرو'" >
          <tr>
           <td Align="Center" bgcolor="#F4F4FF"><font size="2"><xsl:value-of select="first"/></font></td>
           <td Align="Center" bgcolor="#F4F4FF"><font size="2"><xsl:value-of select="last"/></font></td>
        </tr>
       </xsl:if>
      </xsl:for-each>
   </table>
  </body>
 </html>
</xsl:template>
</xsl:stylesheet>

خروجی : پس از مقداردهی خصلت های  DocumentSource و  TransformSource   کنترل سرويس دهنده XML ، به ترتيب به فايل های  XML و  XSL  ، خروجی زير نمايش داده می شود .

مثال سه  :
هدف : استفاده از عنصر xsl:choose  به منظور اتخاذ تصميم  و نمايش اطلاعات دانشجو با نام " خسرو ايرانی " و "پيمان دوستی "
توضيحات  : درمثال فوق ،  از فايل XML  ارائه شده درمثال يک ( فايل XML  حاوی نام و نام خانوادگی پنج  دانشجو می باشد )  و فايل XSL زير استفاده شده است.

Student  XSL file for sortting

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
     <html>
      <body Dir="rtl">
          <H3 Align="Center"> ليست دانشجويان </H3>
          <table border="1" bgcolor="ٌWhite" dir="rtl" Align="Center">
            <tr>
               <th bgcolor="#336699"><font size="3" color="white"> نام </font></th>
               <th bgcolor="#336699"><font size="3" color="white"> نام خانوادگی </font> </th>
           </tr>
           <xsl:for-each select="Students/name">
            <xsl:choose>
               <xsl:when test="first='خسرو'">
                <tr>
                  <td Align="Center" bgcolor="#F4F4FF"><font size="2"><xsl:value-of select="first"/></font></td>
                  <td Align="Center" bgcolor="#F4F4FF"><font size="2"><xsl:value-of select="last"/></font></td>
               </tr>
          </xsl:when>
             <xsl:when test="first='پيمان'">
              <tr>
               <td Align="Center" bgcolor="#F4F4FF"><font size="2"><xsl:value-of select="first"/></font></td>
               <td Align="Center" bgcolor="#F4F4FF"><font size="2"><xsl:value-of select="last"/></font></td>
             </tr>
        </xsl:when>
       </xsl:choose>

      </xsl:for-each>
     </table>
    </body>
   </html>
</xsl:template>
</xsl:stylesheet>

خروجی : پس از مقداردهی خصلت های  DocumentSource و  TransformSource   کنترل سرويس دهنده XML ، به ترتيب به فايل های  XML و  XSL  ، خروجی زير نمايش داده می شود .



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382