এক্সএসএলটি-তে অন্য বিবৃতি কীভাবে কার্যকর করা যায়?


171

আমি এক্সএসএলটি-তে যদি একটি বিবৃতিটি প্রয়োগ করার চেষ্টা করছি তবে আমার কোডটি বিশ্লেষণ করে না। কারো কি কোন ধারনা আছে?

  <xsl:variable name="CreatedDate" select="@createDate"/>
  <xsl:variable name="IDAppendedDate" select="2012-01-01" />
  <b>date: <xsl:value-of select="$CreatedDate"/></b> 

  <xsl:if test="$CreatedDate > $IDAppendedDate">
    <h2> mooooooooooooo </h2>
  </xsl:if>
  <xsl:else>
    <h2> dooooooooooooo </h2>
  </xsl:else>

উত্তর:


316

আপনি <xsl:choose>ট্যাগ ব্যবহার করে এটি পুনরায় প্রতিস্থাপন করতে হবে :

       <xsl:choose>
         <xsl:when test="$CreatedDate > $IDAppendedDate">
           <h2> mooooooooooooo </h2>
         </xsl:when>
         <xsl:otherwise>
          <h2> dooooooooooooo </h2>
         </xsl:otherwise>
       </xsl:choose>

65

যদি বিবৃতিটি কেবলমাত্র একটি শর্ত দ্রুত পরীক্ষা করার জন্য ব্যবহৃত হয়। যখন আপনার একাধিক বিকল্প রয়েছে, <xsl:choose>নীচের চিত্রিত হিসাবে ব্যবহার করুন :

   <xsl:choose>
     <xsl:when test="$CreatedDate > $IDAppendedDate">
       <h2>mooooooooooooo</h2>
     </xsl:when>
     <xsl:otherwise>
      <h2>dooooooooooooo</h2>
     </xsl:otherwise>
   </xsl:choose>

এছাড়াও, আপনি নীচের চিত্রিত হিসাবে <xsl:when>প্রকাশ করতে If .. Else Ifবা Switchনিদর্শনগুলিতে একাধিক ট্যাগ ব্যবহার করতে পারেন :

   <xsl:choose>
     <xsl:when test="$CreatedDate > $IDAppendedDate">
       <h2>mooooooooooooo</h2>
     </xsl:when>
     <xsl:when test="$CreatedDate = $IDAppendedDate">
       <h2>booooooooooooo</h2>
     </xsl:when>
     <xsl:otherwise>
      <h2>dooooooooooooo</h2>
     </xsl:otherwise>
   </xsl:choose>

পূর্ববর্তী উদাহরণটি নীচের সিউডোকোডের সমতুল্য হবে:

   if ($CreatedDate > $IDAppendedDate)
   {
       output: <h2>mooooooooooooo</h2>
   }
   else if ($CreatedDate = $IDAppendedDate)
   {
       output: <h2>booooooooooooo</h2>
   }
   else
   {
       output: <h2>dooooooooooooo</h2>
   }

1
আপনি দয়া করে নীচের বিবৃতিটি সংশোধন করতে পারেন, আমরা সবাই জানি যে (কেস> এক্স) যদি following following অনুসরণ না করে কেবল নিম্নলিখিত 1 টি লাইনটি কার্যকর করে, তবে আমি অনেক শিক্ষানবিশকে এটি দেখেছি যে তারা এখানে যা পোস্ট করেছেন ঠিক তেমন লিখেছেন, সম্ভবত তাদের মধ্যে অনেকগুলি অনুলিপি করা হয়েছে 1: 1
অলিভার

1
যাইহোক, if elseশর্তটি কেবল উদাহরণ বা রাতের একটি সিউডোকোড ছিল। ঠিক আছে, আমি আপনার উদ্বেগ বিবেচনা করি এবং আমি এটি সম্পাদনা করেছি ..
ইনফ্যান্টপ্রো'আরবিন্দ '

36

আমি যদি কিছু পরামর্শ দিতে পারি (দুই বছর পরে তবে ভবিষ্যতের পাঠকদের জন্য আশাবাদী) :

  • সাধারণ h2উপাদান ফ্যাক্টর ।
  • সাধারণ oooooooooooooপাঠ্যটি ফ্যাক্টর ।
  • if/then/elseএক্সএসএলটি ২.০ ব্যবহার করে নতুন এক্সপথ ২.০ নির্মাণ সম্পর্কে সচেতন হন ।

এক্সএসএলটি 1.0 সমাধান (এক্সএসএলটি 2.0 এর সাথেও কাজ করে)

<h2>
  <xsl:choose>
    <xsl:when test="$CreatedDate > $IDAppendedDate">m</xsl:when>
    <xsl:otherwise>d</xsl:otherwise>
  </xsl:choose>
  ooooooooooooo
</h2>

এক্সএসএলটি ২.০ সলিউশন

<h2>
   <xsl:value-of select="if ($CreatedDate > $IDAppendedDate) then 'm' else 'd'"/>
   ooooooooooooo
</h2>

1

সর্বাধিক সোজা-ফরোয়ার্ড পদ্ধতির একটি দ্বিতীয় if-পরীক্ষা করা হয় তবে শর্তটি উল্টে যায়। এই কৌশলটি সংক্ষিপ্ত, চোখের উপর সহজ এবং একটি পছন্দ-অন্যথায় নেস্ট করা ব্লকের চেয়ে ডান পেতে সহজ:

<xsl:variable name="CreatedDate" select="@createDate"/>
     <xsl:variable name="IDAppendedDate" select="2012-01-01" />
     <b>date: <xsl:value-of select="$CreatedDate"/></b> 
     <xsl:if test="$CreatedDate &gt; $IDAppendedDate">
        <h2> mooooooooooooo </h2>
     </xsl:if>
     <xsl:if test="$CreatedDate &lt;= $IDAppendedDate">
        <h2> dooooooooooooo </h2>
     </xsl:if>

সরকারী ওয়েবসাইটের জন্য স্টাইল শিটে ব্যবহৃত কৌশলটির বাস্তব-বিশ্বের উদাহরণ এখানে রয়েছে: http://w1.weather.gov/xML/current_obs/latest_ob.xsl


5
দ্বিতীয় ifটেস্টটি প্রথমটির পরিপূরকের সাথে মেলে কিনা তা মনে রাখা এবং তা নিশ্চিত করার পরে পরবর্তী কোনও পরিবর্তনকে ত্রুটির প্রবণতা তৈরি করে।
ফিলিপ-আন্দ্রে লরিন

2
আমি রাজি, পাল। এছাড়াও, আমি মনে করি উপরের উদাহরণটি পড়া আরও কঠিন, যেখানে একটি ব্যবহার <xsl:choose>করা আরও সহজবোধ্য হবে, এর অর্থটি আরও স্পষ্ট।
ডগ বার্বেরি

1

মূলত এই ব্লগ পোস্ট থেকে । নীচে কোড ব্যবহার করে আমরা অন্যটি অর্জন করতে পারি

<xsl:choose>
    <xsl:when test="something to test">

    </xsl:when>
    <xsl:otherwise>

    </xsl:otherwise>
</xsl:choose>

সুতরাং এখানে আমি কি করেছি

<h3>System</h3>
    <xsl:choose>
        <xsl:when test="autoIncludeSystem/autoincludesystem_info/@mdate"> <!-- if attribute exists-->
            <p>
                <dd><table border="1">
                    <tbody>
                        <tr>
                            <th>File Name</th>
                            <th>File Size</th>
                            <th>Date</th>
                            <th>Time</th>
                            <th>AM/PM</th>
                        </tr>
                        <xsl:for-each select="autoIncludeSystem/autoincludesystem_info">
                            <tr>
                                <td valign="top" ><xsl:value-of select="@filename"/></td>
                                <td valign="top" ><xsl:value-of select="@filesize"/></td>
                                <td valign="top" ><xsl:value-of select="@mdate"/></td>
                                <td valign="top" ><xsl:value-of select="@mtime"/></td>
                                <td valign="top" ><xsl:value-of select="@ampm"/></td>
                            </tr>
                        </xsl:for-each>
                    </tbody>
                </table>
                </dd>
            </p>
        </xsl:when>
        <xsl:otherwise> <!-- if attribute does not exists -->
            <dd><pre>
                <xsl:value-of select="autoIncludeSystem"/><br/>
            </pre></dd> <br/>
        </xsl:otherwise>
    </xsl:choose>

আমার আউটপুট

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.