এক্সএসএলটিতে কোনও স্ট্রিং নাল বা ফাঁকা আছে কিনা তা পরীক্ষা করে দেখুন


325

এক্সএসএল দিয়ে কোনও মান নাল বা ফাঁকা আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি ?

উদাহরণস্বরূপ, যদি categoryNameখালি থাকে? কনস্ট্রাক্ট বেছে নেওয়ার সময় আমি ব্যবহার করছি ।

উদাহরণ স্বরূপ:

<xsl:choose>
    <xsl:when test="categoryName !=null">
        <xsl:value-of select="categoryName " />
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="other" />
    </xsl:otherwise>
</xsl:choose>

আপনি কোড উদাহরণ প্রসারিত করতে পারেন?
নিক অ্যালেন

আপনার ব্যবহারের ক্ষেত্রে উপর নির্ভর করে আপনি সম্ভবত xsl:whenনোড-পরীক্ষার জন্য ব্যবহার করতে চান না । <xsl:template match="Category[categoryName[not(node())]]">...এক সাথে বিবেচনা করুন <xsl:template match="Category">...। প্রসেসর তারপরে আপনার জন্য সঠিক সিদ্ধান্ত নেবে এবং আপনাকে xsl:chooseআর নেস্টেডে ব্যবসায়িক যুক্তি লেখার দরকার নেই। অনেক ক্ষেত্রে মেলানো টেম্পলেটগুলি স্টাইলশিটগুলি লেখা সহজ করে তোলে।
আবেল

উত্তর:


322
test="categoryName != ''"

সম্পাদনা : এটি আমার সিউডো কোড এবং এক্সএসএলটি-র সাথে আমার নিজস্ব প্রথম অভিজ্ঞতা সহ প্রশ্ন থেকে অনুমান হিসাবে "[নাল] নাল বা খালি নয়" এর সবচেয়ে সম্ভবত ব্যাখ্যাটি অন্তর্ভুক্ত করে। অর্থাৎ, "নীচের জাভা এর সমতুল্য কি?":

!(categoryName == null || categoryName.equals(""))

আরও তথ্যের জন্য যেমন, নাল বনাম ফাঁকা স্পষ্টভাবে চিহ্নিত করে দেখুন, নীচে জোহনভিয়ের উত্তর দেখুন এবং / অথবা আমি উত্তর থেকে অভিযোজিত এক্সএসএলটি ' ফ্রিডাল ' পেয়েছি, যার মধ্যে মাইকেল কেয়ের মন্তব্যে বিকল্প রয়েছে এবং ষষ্ঠ সম্ভাব্য ব্যাখ্যারও অন্তর্ভুক্ত রয়েছে।


14
এই পরীক্ষার বিশদ শব্দার্থবিদ্যা হল: যদি কমপক্ষে একটি বিভাগের নাম উপাদান থাকে যার স্ট্রিং মান খালি স্ট্রিং থাকে তবে সত্যটি প্রত্যাবর্তন করুন।
jelovirt

14
@ জেলোভিট বলতে কি বোঝাতে চাইছেন যদি সেখানে কমপক্ষে একটি বিভাগ থাকে তবে এটি নামটি খালি স্ট্রিং নয়? (আমি এক্সএএসএল নবাগত, সুতরাং আমার প্রশ্নের যে কোনও সম্ভাব্য বোকামি ক্ষমা করুন))
জোদেভন

10
এই উত্তরটি গৃহীত হয়েছে এবং সর্বোচ্চ ভোট দেওয়া হয়েছে, এটিও খুব বিভ্রান্তিকর। এটি "নাল বা খালি" বলতে চাইলে তা নির্ভর করে। আপনি যদি এমন কোনও পরীক্ষা চান যা ক্যাটাগরির নামটি অনুপস্থিত থাকে বা শূন্য-দৈর্ঘ্যের মান সহ উপস্থিত থাকে তবে সফল হয় আপনার ব্যবহার করা উচিত test="not(categoryName = '')"। সরবরাহ করা উত্তরটি মিথ্যা হিসাবে প্রত্যাবর্তন করবে যদি বিভাগের নাম উপাদানটি অনুপস্থিত থাকে, যা আমার প্রশ্নের ব্যাখ্যাতে এটি একটি ভুল উত্তর করে makes
মাইকেল কে

2
@ মিশেলকে: আরও বিশদ দেওয়ার জন্য আমি উত্তর আপডেট করেছি। মন্তব্যের জন্য এবং স্যাকসন এক্সএসএলটি প্রসেসরের জন্য ধন্যবাদ!
স্টিমার 25

আমি কীভাবে অনুবাদ করব <xsl:for-each select="root/*[matches(name(.), 'grp')]">যাতে এটি VS2010 এ ব্যবহার করা যায়?
Si8

276

অন্য কোনও তথ্যের অনুপস্থিত, আমি নিম্নলিখিত এক্সএমএল ধরে নেব:

<group>
    <item>
        <id>item 1</id>
        <CategoryName>blue</CategoryName>
    </item>
    <item>
        <id>item 2</id>
        <CategoryName></CategoryName>
    </item>
    <item>
        <id>item 3</id>
    </item>
    ...
</group>

একটি নমুনা ব্যবহারের ক্ষেত্রে দেখতে হবে:

<xsl:for-each select="/group/item">
    <xsl:if test="CategoryName">
        <!-- will be instantiated for item #1 and item #2 -->
    </xsl:if>
    <xsl:if test="not(CategoryName)">
        <!-- will be instantiated for item #3 -->
    </xsl:if>
    <xsl:if test="CategoryName != ''">
        <!-- will be instantiated for item #1 -->
    </xsl:if>
    <xsl:if test="CategoryName = ''">
        <!-- will be instantiated for item #2 -->
    </xsl:if>
</xsl:for-each>

উদাহরণস্বরূপ আপনি কীভাবে পরীক্ষা করেন </CategoryName>? , খালি স্ট্রিং পরীক্ষাগুলি এর জন্য কাজ করে না
রাফিয়ান

3
এটি প্রশংসিত যে আপনি প্রতিটি বহিঃপ্রকাশের ফলাফল কীভাবে তা দেখানোর জন্য একাধিক উদাহরণ অন্তর্ভুক্ত করেছেন।
DoubleJ

1
@ ইরফিয়ান: এক্সএসএলটি বা সম্পর্কিত প্রযুক্তিগুলিতে (এক্সকিউয়ারি, ডিওএম, এক্সডিএম, স্কিমা ইত্যাদি), শেষ-ট্যাগগুলি পৃথক সত্তা হিসাবে বিবেচিত হয় না। পরিবর্তে, আপনি কেবল এই ক্ষেত্রে নোডগুলি বা উপাদানগুলির সাথে লেনদেন করেন যা পুরো-স্টার্ট-ট্যাগ এবং শেষ-ট্যাগের মধ্যে রয়েছে। সংক্ষেপে, এর জন্য পরীক্ষার কোনও উপায় নেই </CategoryName>, না কোনও প্রয়োজন নেই।
আবেল

4
আমি এই উত্তরটির জন্য বিশেষত প্রশ্নটি চিহ্নিত করেছি এবং প্রশ্নটি বেশ পুরানো হলেও এইটি নির্বাচিত উত্তর হওয়ার পক্ষে অনেক বেশি প্রাপ্য বলে মনে হচ্ছে
প্যাট্রিক

68

খালি উপাদান থেকে :

একটি নির্দিষ্ট নোডের মান খালি কিনা তা পরীক্ষা করতে

এটি খালি বলতে কী বোঝায় তার উপর নির্ভর করে depends

  • কোনও শিশু নোড নেই: not(node())
  • কোনও পাঠ্য সামগ্রী নেই: not(string(.))
  • শ্বেতস্থান ব্যতীত অন্য কোনও পাঠ্য নেই: not(normalize-space(.))
  • মন্তব্য ব্যতীত কিছুই নেই: not(node()[not(self::comment())])

2
+1 টি। কিছু নোট। প্রথম বুলেটপয়েন্টটি পাঠ্য-সামগ্রীর জন্যও পরীক্ষা করে, যা একটি নোডও। দ্বিতীয় বুলেটপয়েন্টটি যে কোনও পাঠ্য নোডের জন্য কোনও গভীরতাতে পরীক্ষা করে, আপনি যদি জানতে চান যে বর্তমান নোডটিতে পাঠ্য নেই, তবে অন্যান্য নোড থাকতে পারে, আপনি ব্যবহার করতে পারেন not(text())। আপনার ২ য় বুলেটের বিকল্পও not(.//text())। আপনার শেষ বুলেটটি যেমন দেখায়: "কিছুই নয়" বিবেচনা করার অনেকগুলি উপায় রয়েছে;)।
আবেল

অত্যন্ত ব্যবহারিক: একটি স্ট্রিং ফাঁকা নেই কিনা তা পরীক্ষা করতে আপনি নিজেই স্ট্রিংটি পরীক্ষা করতে পারবেন! if ($mystring) then ... else ...
ফেলিক্স ডমব্যাক

22

কি সম্পর্কে?

test="not(normalize-space(categoryName)='')"

1
এটি দুর্দান্ত কাজ করে। এমনকি যখন ভিতরে কোনও মন্তব্য রয়েছে <categoryName> <!-- some comment --> </categoryName>এবং অন্যথায় কোনও অর্থবহ পাঠ্য নেই, তখনও এটি মূল্যায়ন করেtrue
rustx

9

নাল মান সহ প্রথম দুটি চুক্তি এবং খালি স্ট্রিংয়ের সাথে দ্বিতীয় দুটি চুক্তি।

<xsl:if test="USER/FIRSTNAME">
    USERNAME is not null
</xsl:if>
<xsl:if test="not(USER/FIRSTNAME)">
    USERNAME is null
 </xsl:if>
 <xsl:if test="USER/FIRSTNAME=''">
     USERNAME is empty string
 </xsl:if>
 <xsl:if test="USER/FIRSTNAME!=''">
     USERNAME is not empty string
 </xsl:if>

1
ভয়ের। যদি একাধিক ব্যবহারকারী বা একাধিক প্রথম নাম থাকে? xsl:apply-templatesআপনি যা চান তা পেতে টেমপ্লেটগুলি ব্যবহার করুন এবং মেলান matching
আবেল

7

কিছু ক্ষেত্রে, আপনি জানতে চাইতে পারেন যে মানটি কখন বিশেষভাবে শূন্য হয়, যা XML ব্যবহার করার সময় বিশেষত প্রয়োজনীয় যা যা NET অবজেক্ট থেকে সিরিয়ালযুক্ত করা হয়েছিল। গৃহীত উত্তর এটির জন্য কাজ করে, যখন স্ট্রিং ফাঁকা বা খালি হয় অর্থাৎ '', তখন আপনি পৃথক করতে পারবেন না একই ফলাফলও দেয়।

<group>
    <item>
        <id>item 1</id>
        <CategoryName xsi:nil="true" />
    </item>
</group>

সুতরাং আপনি কেবল গুণাবলী পরীক্ষা করতে পারেন।

<xsl:if test="CategoryName/@xsi:nil='true'">
   Hello World.
</xsl:if>

কখনও কখনও এটির সঠিক অবস্থাটি জানা দরকার এবং আপনি কেবল বিভাগের নামটি ইনস্ট্যান্ট করা আছে কিনা তা পরীক্ষা করতে পারবেন না, কারণ জাভাস্ক্রিপ্টের মত নয়

<xsl:if test="CategoryName">
   Hello World.
</xsl:if>

একটি নাল উপাদান জন্য সত্য ফিরে আসবে।


6

আমি জানি এই প্রশ্নটি পুরানো, তবে সমস্ত উত্তরের মধ্যে, আমি এক্সএসএলটি বিকাশের ক্ষেত্রে এই ব্যবহারের ক্ষেত্রে একটি সাধারণ পদ্ধতির একটি মিস করছি।

আমি ধারণা করছি যে অপিটি থেকে অনুপস্থিত কোডটি এরকম কিছু দেখাচ্ছে:

<xsl:template match="category">
    <xsl:choose>
        <xsl:when test="categoryName !=null">
            <xsl:value-of select="categoryName " />
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="other" />
        </xsl:otherwise>
    </xsl:choose>
</category>

এবং ইনপুটটি দেখতে এমন কিছু দেখাচ্ছে:

<categories>
    <category>
       <categoryName>Books</categoryName>
    </category>
    <category>
       <categoryName>Magazines</categoryName>
       <categoryName>Periodicals</categoryName>
       <categoryName>Journals</categoryName>
    </category>
    <category>
        <categoryName><!-- please fill in category --></categoryName>
    </category>
    <category>
        <categoryName />
    </category>
    <category />
</categories>

অর্থাৎ, আমি ধরে নিচ্ছি শূন্য, খালি, একক বা একাধিক categoryNameউপাদান থাকতে পারে। xsl:chooseস্টাইল কনস্ট্রাক্টস ব্যবহার করে বা অন্য কথায়, জরুরীভাবে এই সমস্ত ক্ষেত্রে মোকাবেলা করার জন্য দ্রুত অগোছালো হয়ে উঠছে (আরও বেশি কিছু যদি উপাদানগুলি বিভিন্ন স্তরে হতে পারে!)। এক্সএসএলটি-র একটি সাধারণ প্রোগ্রামিং আইডিয়ামটি টেম্পলেটগুলি ব্যবহার করছে (অতএব টিএস ইন এক্সএসএলটি), যা ঘোষিত প্রোগ্রামিং, অত্যাবশ্যক নয় (আপনি প্রসেসরের কী করতে হবে তা বলবেন না, কিছু শর্ত পূরণ হলে আপনি কী আউটপুট চান তা কেবল বলুন)। এই ব্যবহারের ক্ষেত্রে এটি নীচের মতো কিছু দেখতে পারে:

<!-- positive test, any category with a valid categoryName -->
<xsl:template match="category[categoryName[text()]]">
    <xsl:apply-templates />
</xsl:template>

<!-- any other category (without categoryName, "null", with comments etc) -->
<xsl:template match="category">
    <xsl:text>Category: Other</xsl:text>
</xsl:template>

<!-- matching the categoryName itself for easy handling of multiple names -->
<xsl:template match="categoryName">
    <xsl:text>Category: </xsl:text>
    <xsl:value-of select="." />
</xsl:template>

এটি (যে কোনও এক্সএসএলটি সংস্করণ সহ) কাজ করে, কারণ উপরের প্রথমটির উচ্চতর অগ্রাধিকার রয়েছে (এটির একটি প্রিডিকেট রয়েছে)। "ফল-থ্রু" মেলানো টেম্পলেট, দ্বিতীয়টি, বৈধ নয় এমন কোনও জিনিসকে ধরে। তৃতীয়টি তারপরে আউটপুট দেওয়ার যত্ন নেয়categoryName সঠিকভাবে মান

নোট এই দৃশ্যকল্প মধ্যে কোন প্রয়োজন থেকে specifially মেলে নেই categoriesবা category, কারণ প্রসেসর স্বয়ংক্রিয়ভাবে সব শিশুদের প্রক্রিয়া হবে, যদি না আমরা তা অন্যথায় বলবেন না (এই উদাহরণে, দ্বিতীয় ও তৃতীয় টেমপ্লেট আরও না প্রক্রিয়া শিশু না, কারণ সেখানে xsl:apply-templatesএ তাদের)।

এই দৃষ্টিভঙ্গিটি আরও সহজেই প্রসারণযোগ্য হ'ল অত্যাবশ্যক পদ্ধতির, কারণ এটি স্বয়ংক্রিয়ভাবে একাধিক বিভাগগুলির সাথে সম্পর্কিত এবং এটি অন্য উপাদান বা ব্যতিক্রমগুলির জন্য কেবল অন্য একটি ম্যাচিংয়ের টেম্পলেট যুক্ত করে বাড়ানো যেতে পারে। যদি-শাখা ছাড়া প্রোগ্রামিং

দ্রষ্টব্য: nullএক্সএমএল তেমন কোনও জিনিস নেই । নেই xsi: শূন্য , কিন্তু যে খুব কমই কিছু সাজানোর একটি স্কিমা ছাড়া ব্যবহার করা হয় untyped পরিস্থিতিতে বিশেষ করে খুব কমই।


1
" যদি-শাখা ছাড়াই প্রোগ্রামিং " উল্লেখ করার জন্য অভিনন্দন । কিছু লোক আছে যারা এর গুরুত্ব বুঝতে ব্যর্থ হয়। ": তাদের সব জন্য এখানে এই বিষয়ে একটি খুব সুন্দর Pluralsight অবশ্যই একটি লিঙ্ক : নিয়ন্ত্রণ ফ্লো .NET মধ্যে কৌশলগত নকশা নিদর্শন জোরান Horvat দ্বারা": app.pluralsight.com/library/courses/... একটি আবশ্যক পড়ুন!
দিমিত্রে নোভাচেভ

5

এক্সএসএল দিয়ে কোনও মান নাল বা ফাঁকা আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?

উদাহরণস্বরূপ, যদি categoryNameখালি থাকে?

এটি সম্ভবত সবচেয়ে সহজ এক্সপথ এক্সপ্রেশন (স্বীকৃত উত্তরের উত্তরটি বিপরীতটির জন্য একটি পরীক্ষা সরবরাহ করে এবং অবহেলিত হলে দীর্ঘতর হবে):

not(string(categoryName))

ব্যাখ্যা :

not()উপরের ফাংশনের যুক্তি false()হুবহু যখন categoryNameপ্রসঙ্গ আইটেমের কোনও শিশু ("নাল") না থাকে বা (একক এরকম) categoryNameসন্তানের স্ট্রিংয়ের মান থাকে - খালি স্ট্রিং।

কনস্ট্রাক্ট বেছে নেওয়ার সময় আমি ব্যবহার করছি ।

উদাহরণ স্বরূপ:

<xsl:choose>
    <xsl:when test="categoryName !=null">
        <xsl:value-of select="categoryName " />
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="other" />
    </xsl:otherwise>
</xsl:choose>

এক্সএসএলটি ২.০ এ ব্যবহার করুন :

<xsl:copy-of select="concat(categoryName,  $vOther[not(string(current()/categoryName))])"/>

এখানে একটি সম্পূর্ণ উদাহরণ :

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:variable name="vOther" select="'Other'"/>

 <xsl:template match="/">
  <xsl:copy-of select="concat(categoryName,$vOther[not(string(current()/categoryName))])"/>
 </xsl:template>
</xsl:stylesheet>

এই রূপান্তরটি নিম্নলিখিত XML নথিতে প্রয়োগ করা হয়:

<categoryName>X</categoryName>

চেয়েছিলেন, সঠিক ফলাফল উত্পন্ন হয় :

X

এই এক্সএমএল ডকুমেন্টে প্রয়োগ করা হলে :

<categoryName></categoryName>

অথবা এটিতে:

<categoryName/>

বা এই উপর

<somethingElse>Y</somethingElse>

সঠিক ফলাফল উত্পাদিত হয় :

Other

একইভাবে, এই এক্সএসএলটি 1.0 ট্রান্সফর্মেশনটি ব্যবহার করুন :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:variable name="vOther" select="'Other'"/>

  <xsl:template match="/">
    <xsl:copy-of select=
    "concat(categoryName,  substring($vOther, 1 div not(string(categoryName))))"/>
  </xsl:template>
</xsl:stylesheet>

মনে রাখবেন : কোনও শর্তসাপেক্ষ ব্যবহার করা হয় না। এই দুর্দান্ত বহুত্বদৃষ্টি কোর্সে শর্তাধীন নির্মাণগুলি এড়ানোর গুরুত্ব সম্পর্কে আরও জানুন:

" নেট মধ্যে কৌশলগত নকশার প্যাটার্নসমূহ: নিয়ন্ত্রণ প্রবাহ "


হাই দিমিত্রে, আমার আপনার সমাধানটি 1.0 এর জন্য দরকার, তাই আমার কি প্রতিটি ট্যাগগুলিতে কোড কোড করা দরকার বা পুরো এক্সএমএলটির জন্য এটি চাপিয়ে দেওয়ার কোনও সহজ উপায় আছে?
জাইবারজক

@zyberjock, আপনি কী জিজ্ঞাসা করছেন তা অস্পষ্ট। দয়া করে একটি প্রশ্ন পোস্ট করুন এবং আমাকে একটি লিঙ্ক সহ একটি মন্তব্য পাঠান। একটি ভাল প্রশ্ন জিজ্ঞাসা কিভাবে গাইডলাইন অনুসরণ করুন।
দিমিত্রে নোভাচেভ

হাই @Dimitre, আমি একটা প্রশ্ন এখানে পোস্ট stackoverflow.com/questions/38150093/...
zyberjock

4

যদি এক্সএমএলে উপাদানটির অস্তিত্ব না থাকার সম্ভাবনা থাকে তবে আমি উপাদানটি উপস্থিত রয়েছি এবং স্ট্রিং-দৈর্ঘ্য শূন্যের চেয়েও বেশি উভয়ই পরীক্ষা করে দেখব:

<xsl:choose>
    <xsl:when test="categoryName and string-length(categoryName) &gt; 0">
        <xsl:value-of select="categoryName " />
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="other" />
    </xsl:otherwise>
</xsl:choose>

3
খালি নোড সেটটির স্ট্রিং মান (যা বর্তমান প্রসঙ্গে categoryNameকোনও categoryNameশিশু উপাদান না থাকা অবস্থায় এক্সপথ এক্সপ্রেশন আপনাকে দেয় ) খালি স্ট্রিং হিসাবে সংজ্ঞায়িত করা হয়, সুতরাং এটি string-length(categoryName)কোনও অপ্রয়োজনীয় - যদি কোনও categoryNameউপাদান না থাকে তবে শূন্য হয় ।
ইয়ান রবার্টস

3

এক্সপথের নীচের মতো ইনপুট এক্সএমএলে কোনও নোডের কোনও মান উপলব্ধ না থাকলে,

<node>
    <ErrorCode/>
</node>

স্ট্রিং () ফাংশন খালি মান রূপান্তর করে। সুতরাং এটি কাজ করে:

string(/Node/ErrorCode) =''

2

এরকম কিছু আমার পক্ষে কাজ করে:

<xsl:choose>
  <xsl:when test="string(number(categoryName)) = 'NaN'"> - </xsl:when> 
  <xsl:otherwise> 
    <xsl:number value="categoryName" />
  </xsl:otherwise>
</xsl:choose>

কাছাকাছি বা অন্যান্য উপায়:

<xsl:choose>
  <xsl:when test="string(number(categoryName)) != 'NaN'">
    <xsl:number value="categoryName" />
  </xsl:when> 
  <xsl:otherwise> - </xsl:otherwise>
</xsl:choose>

দ্রষ্টব্য: আপনি নাল মানগুলি পরীক্ষা না করে বা শূন্য মানগুলি পরিচালনা না করে, আই 7 NaN এর পরিবর্তে -2147483648 প্রদান করে।


1

আমি আসলে স্ট্রিংয়ের দৈর্ঘ্যের জন্য এটি পরীক্ষা করে দেখতে পেয়েছি যেহেতু বহুবার ক্ষেত্রটি শূন্য নয়, খালি রয়েছে

<এক্সএসএল: যখন পরীক্ষা = "স্ট্রিং-দৈর্ঘ্য (ফিল্ড-আপনি-পরীক্ষা করতে চান) <1">


0

আমার অভিজ্ঞতার দ্বারা সর্বোত্তম উপায় হ'ল:

<xsl:when test="not(string(categoryName))">
    <xsl:value-of select="other" />
</xsl:when>
<otherwise>
    <xsl:value-of select="categoryName" />
</otherwise>

0

সহজ categoryName / পাঠ্য ব্যবহার করুন () এই ধরনের পরীক্ষার কাজ করে জরিমানা <categoryName/>এবং <categoryName></categoryName>

<xsl:choose>
    <xsl:when test="categoryName/text()">
        <xsl:value-of select="categoryName" />
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="other" />
    </xsl:otherwise>
</xsl:choose>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.