এক্সএসএলটি দিয়ে আমি কীভাবে একটি স্ট্রিংকে আপার-বা নিম্ন-কেস-এ রূপান্তর করতে পারি?


118

এক্সএসএলে আপনি কীভাবে কেস রূপান্তর করবেন?

<xsl:variable name="upper">UPPER CASE</xsl:variable>
<xsl:variable name="lower" select="???"/>

উত্তর:


194

এক্সএসএলটি 1.0 তে upper-case()এবং lower-case()ফাংশনগুলি উপলভ্য নয়। আপনি যদি কোনও 1.0 স্টাইলশিট ব্যবহার করে থাকেন তবে কেস রূপান্তরকরণের সাধারণ পদ্ধতিটি হ'ল translate():

<xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />


<xsl:template match="/">
  <xsl:value-of select="translate(doc, $lowercase, $uppercase)" />
</xsl:template>

5
একটি ইউনিকোড সংস্করণ আছে? এই সমাধানটি মজার চরিত্রগুলির সাথে কাজ করছে না ...
এমজেএস

1
এক্সএসএলটি 1.0 এর জন্য আপনাকে ছোট / বড় হাতের ভেরিয়েবলগুলিতে আরও যুক্ত করতে বা একটি এক্সটেনশন ফাংশন ব্যবহার করতে হবে।
জন ডব্লিউ

1
আপনি যদি এক্সটেনশন ফাংশনটি ব্যবহার না করার সিদ্ধান্ত নিয়ে থাকেন তবে আপনি ইউনিকোড ক্যারেক্টার ডেটাবেস ব্যবহার করে একটি সম্পূর্ণ তালিকা তৈরি করতে সক্ষম হতে পারেন: unicode.org/Public/UNIDATA/UCD.html
জন ডব্লু

13
এখানে সম্পূর্ণ এএনএসআই টেবিল: অনুবাদ করুন (% s, 'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞŸŽŠŒ', '
abcdefghijklmnopqrstuvwxyzàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿžšœ

41

এক্সএসএলটি ২.০ রয়েছে upper-case()এবং এর lower-case()কাজ করে। এক্সএসএলটি 1.0 এর ক্ষেত্রে, আপনি ব্যবহার করতে পারেন translate():

<xsl:value-of select="translate("xslt", "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ")" />

9

.NET এক্সএসএলটি বাস্তবায়ন স্টাইলশিটে কাস্টম পরিচালিত ফাংশনগুলি লেখার অনুমতি দেয়। লোয়ার-কেস () এর জন্য এটি হতে পারে:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:utils="urn:myExtension" exclude-result-prefixes="msxsl">

  <xsl:output method="xml" indent="yes"/>

  <msxsl:script implements-prefix="utils" language="C#">
    <![CDATA[
      public string ToLower(string stringValue)
      {
        string result = String.Empty;

        if(!String.IsNullOrEmpty(stringValue))
        {
          result = stringValue.ToLower(); 
        }

        return result;
      }
    ]]>
  </msxsl:script>

  <!-- using of our custom function -->
  <lowercaseValue>
    <xsl:value-of select="utils:ToLower($myParam)"/>
  </lowercaseValue>

ধরুন, এটি ধীর হতে পারে তবে এখনও গ্রহণযোগ্য।

রূপান্তরকরণের জন্য এম্বেড করা স্ক্রিপ্টস সমর্থন সক্ষম করতে ভুলবেন না:

// Create the XsltSettings object with script enabled.
XsltSettings xsltSettings = new XsltSettings(false, true);

XslCompiledTransform xslt = new XslCompiledTransform();

// Load stylesheet
xslt.Load(xsltPath, xsltSettings, new XmlUrlResolver());

3
এই সমাধানটি কোনও অক্ষর এমনকি অদ্ভুত ইউনিকোডগুলি নিয়েও কাজ করবে। এটি আমার পক্ষে দুর্দান্ত কাজ করেছে, তবে আমি পদ্ধতিটির বডিটি সহজ করে দিয়েছি return (stringValue ?? string.Empty).ToLower();। ধন্যবাদ @ ভ্লাদিস্লাভ, আমি কখনই জানতাম না যে আপনি এটি করতে পারেন!
জো স্কিন

2
<xsl:variable name="upper">UPPER CASE</xsl:variable>
<xsl:variable name="lower" select="translate($upper,'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"/>
<xsl:value-of select ="$lower"/>

//displays UPPER CASE as upper case

0

এএনএসআই চরিত্রের এনকোডিংয়ের জন্য:

 translate(//variable, 'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞŸŽŠŒ', 'abcdefghijklmnopqrstuvwxyzàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿžšœ')

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