একটি XSLT নাম উপাদান আছে?


101

এক্সএসএলটি-তে রয়েছে

<xsl:value-of select="expression"/>

কোনও উপাদানটির মান পেতে, তবে উপাদানটির ট্যাগ-নাম নির্বাচন করার জন্য কি কিছু আছে?

এরকম পরিস্থিতিতে:

<person>
  <!-- required stuff -->
  <name>Robert</name>
  <!-- optional stuff, free form for future extension. 
       Using XMLSchema's xsd:any -->
  <profession>programmer</profession>
  <hobby>photography</hobby>
</person>

<xsl:for-each select="person">
   <xsl:tag-of select="."/> : <xsl:value-of select="."/>
</xsl:for-each>

এভাবে আউটপুট পেতে:

name : Robert
profession : programmer
hobby : photography

অবশ্যই উপরের এক্সএসএলটি সংকলন করবে না কারণ

 <xsl:tag-of select="expression"/>

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


এই প্রশ্নের সর্বাধিক প্রাসঙ্গিক ট্যাগ হ'ল এক্সপথ। উভয় ফাংশন এক্সপাথ স্ট্যান্ডার্ড ফাংশন এবং কোনও হোস্টিং ভাষার প্রেক্ষাপটে এক্সপথ এক্সপ্রেশনের মধ্যে ব্যবহার করা যেতে পারে (সি #, এক্সএসএলটি, এক্সকিউয়ারি, ...) দয়া করে, পুনরায় ট্যাগ করুন
দিমিত্রে নোভাচেভ

এই পাঠ্য: "এক্সএসএলটিতে <xsd: মান-নির্বাচন =" এক্সপ্রেশন "/>" রয়েছে - এতে একটি ত্রুটি রয়েছে। এক্সএসএলটি নির্দেশের জন্য সাধারণত ব্যবহৃত উপসর্গ হ'ল "এক্সএসএল"। সাধারণত এক্সএমএল স্কিমা ব্যবহার করার সময় আমরা "এক্সএসডি" বা "এক্সএস" উপসর্গটি ব্যবহার করি। সংশোধন করুন.
দিমিত্রে নোভাচেভ

উত্তর:


156

এটি আপনাকে বর্তমান উপাদানটির নাম দেবে (ট্যাগের নাম)

<xsl:value-of select ="name(.)"/>

ওপি-সম্পাদনা: এটি কৌশলটিও করবে:

<xsl:value-of select ="local-name()"/>

12
স্থানীয়-নামটি আপনি 10 এর মধ্যে 9 বার চান
অনাকাটা

20
লোকাল-নাম স্যানস নেমস্পেস, এ কারণেই এটি সাধারণত ভাল।
জন ডব্লিউ

102

ফাংশনগুলির শব্দার্থবিজ্ঞানের মধ্যে সূক্ষ্ম পার্থক্যকে কেউ চিহ্নিত করেনি name()এবং local-name()

  • name(someNode) নোডের পুরো নাম প্রদান করে এবং নোড একটি উপাদান বা বৈশিষ্ট্যযুক্ত ক্ষেত্রে প্রিফিক্স এবং কোলনকে অন্তর্ভুক্ত করে।
  • local-name(someNode) নোডের স্থানীয় নামটিই ফেরত দেয় এবং নোড কোনও উপাদান বা বৈশিষ্ট্যযুক্ত ক্ষেত্রে প্রিফিক্স এবং কোলনকে অন্তর্ভুক্ত করে না।

সুতরাং, এমন পরিস্থিতিতে যেখানে কোনও নাম দুটি পৃথক নেমস্পেসের name()সাথে সম্পর্কিত হতে পারে, এই নামগুলি আলাদা করার জন্য কারও অবশ্যই ফাংশনটি ব্যবহার করা উচিত ।

এবং, বিটিডাব্লু, কোনও যুক্তি ছাড়াই উভয় ফাংশন নির্দিষ্ট করা সম্ভব :

name() এর জন্য একটি সংক্ষেপণ name(.)

local-name() এর জন্য একটি সংক্ষেপণ local-name(.)

পরিশেষে , মনে রাখবেন যে কেবলমাত্র উপাদান এবং বৈশিষ্ট্যগুলির নামই নয়, এই দুটি ফাংশন পিআইতেও ব্যবহার করা যেতে পারে এবং এটিতে তারা অভিন্ন)।


15
<xsl:for-each select="person">
  <xsl:for-each select="*">
    <xsl:value-of select="local-name()"/> : <xsl:value-of select="."/>
  </xsl:for-each>  
</xsl:for-each>

একটি ভাল অনুশীলন হিসাবে সর্বদা নোড <xsl এর মান-প্রাপ্ত করার সময় নরমালাইজ-স্পেস () ব্যবহার করুন: মান-নির্বাচন করুন = "নরমালাইজ-স্পেস (।)" /> এটি অতিরিক্ত স্থান ট্রিম করবে
সুতরাং ব্যবহারকারী

এই জাতীয়করণ / স্যানিটাইটিসেশন কেবল তখনই প্রয়োজন হত যদি এটি ইনপুট সংগ্রহের পর্যায়ে পরিচালনা না করা হত। এটি করার পরে অ্যাক্সেসের সময় এটি করা সাশ্রয় হয় যা সাধারণত প্রায়শই প্রায়শই ঘটে। একটি আরডিবিতে যুক্ত করার আগে এটি করা উচিত, এবং এক্সএমএল ডকুমেন্টটি অন্য একটি ডাটাবেস।
পতঞ্জলি

9

আগ্রহীদের জন্য, এখানে নেই:

<xsl:tag-of select="."/>

তবে আপনি গিয়ে ট্যাগ / উপাদান পুনরায় তৈরি করতে পারেন:

<xsl:element name="{local-name()}">
  <xsl:value-of select="substring(.,1,3)"/>
</xsl:element>

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


6
<xsl:value-of select="name(.)" /> : <xsl:value-of select="."/>

তাহলে কেন এই ভোটে নামবেন? মঞ্জুরিপ্রাপ্ত স্থানীয় নাম () উল্লেখ করতে পারত যদি আপনিও নামের স্থানটি না চান তবে এটি কেন কাজ করবে না তা ব্যাখ্যা করার জন্য বিস্তৃত সম্প্রদায়ের পক্ষে উপকারী হবে।
রোল্যান্ড শ

সম্ভবত, এটি প্রদত্ত XML রূপান্তর করতে পারে না couldn't নাম (।) এই ক্ষেত্রে "ব্যক্তি" হবে। এটি "নাম", "পেশা" এবং "শখ" হওয়া উচিত।
রায় লু

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

4
এই ছোটখাট বিশদটি স্থির করে দেওয়া - ব্যক্তিগতভাবে, আমি মনে করি যে লোকেরা কেন কিছুকে নিম্নমানের হয় তা ব্যাখ্যা করা উচিত, কারণ এটি সম্মিলিত জ্ঞান ব্যাখ্যা করতে সহায়তা করে ...
রোল্যান্ড শ

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