কোনও এক্সএসএলটি বর্তমান তারিখটি ?োকাতে পারে?


95

আমাদের অফিসে আমরা যে প্রোগ্রামটি ব্যবহার করি সেগুলি এক্সএইচএমটিএল একটি এক্সএসএলটি ফাইলের সাথে রফতানি হওয়া একটি এক্সএমএল ফাইল অনুবাদ করে প্রতিবেদনগুলি রফতানি করে। ফর্ম্যাটটি পরিবর্তন করতে এবং উত্স এক্সএমএল ফাইল থেকে আরও তথ্য যুক্ত করতে আমি এক্সএসএলটি পুনরায় লিখছি।

আমি চূড়ান্ত প্রতিবেদনে ফাইলটি তৈরি করার তারিখটি অন্তর্ভুক্ত করতে চাই। তবে বর্তমান তারিখ / সময়টি মূল এক্সএমএল ফাইলের সাথে অন্তর্ভুক্ত নয় এবং এক্সএমএল ফাইলটি কীভাবে তৈরি হয় সে সম্পর্কে আমার কোনও নিয়ন্ত্রণ নেই। এক্সএসএলটিতে এমন কোনও তারিখের কার্যকারিতা নেই যা বর্তমান তারিখটি ফিরিয়ে দেবে।

আমার এক্সএসএলটি রূপান্তরকালে আমি কীভাবে বর্তমান তারিখটি অন্তর্ভুক্ত করতে সক্ষম হতে পারি সে সম্পর্কে কারও কি ধারণা আছে?


আমি জানি না কী পার্সার ব্যবহার হচ্ছে এটিই সমস্যা। আমি প্রোগ্রামটি রফতানির প্রতিবেদনগুলি সরাসরি ব্যবহার করেছি এবং প্রতিবেদনগুলি তৈরি করতে তার প্রোগ্রাম ডিরেক্টরিতে এক্সএসএলটি ফাইল ব্যবহার করি।
এরিক আনাস্তাস

উত্তর:


117

এক্সএসএলটি 2

তারিখ ফাংশন স্থানীয়ভাবে পাওয়া যায়, যেমন:

<xsl:value-of  select="current-dateTime()"/>

এছাড়াও আছে current-date()এবং current-time()

এক্সএসএলটি ঘ

এক্সএসএলটি তারিখ এবং সময় এক্সটেনশন প্যাকেজটি ব্যবহার করুন।

  1. গিটহাব থেকে তারিখ এবং সময় প্যাকেজটি ডাউনলোড করুন ।
  2. এক্সট্র্যাক্ট date.xslআপনার XSL কেও ফাইল অবস্থান।
  3. স্টাইলশিট শিরোনাম সেট করুন।
  4. আমদানি করুন date.xsl

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

<xsl:stylesheet version="1.0" 
    xmlns:date="http://exslt.org/dates-and-times" 
    extension-element-prefixes="date"
    ...>

    <xsl:import href="date.xsl" />

    <xsl:template match="//root">
       <xsl:value-of select="date:date-time()"/>
    </xsl:template>
</xsl:stylesheet>


7
যে ব্যবহার করবেন জন্য .net / C # ব্যবহার -, EXSLT আমদানির মান .NET XSLT ট্রান্সফরমার সঙ্গে কাজ পেতে চেষ্টা খুব বেশী সময় ব্যয় না MVP.XML সরাসরি। এটি ESXLT এর জন্য অন্তর্নির্মিত সমর্থন করেছে
জোয়েল পুররা

15

এমএসএক্সএমএল পার্সারের জন্য এটি ব্যবহার করে দেখুন:

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                xmlns:my="urn:sample" extension-element-prefixes="msxml">

    <msxsl:script language="JScript" implements-prefix="my">
       function today()
       {
          return new Date(); 
       } 
    </msxsl:script> 
    <xsl:template match="/">

        Today = <xsl:value-of select="my:today()"/>

    </xsl:template> 
</xsl:stylesheet>

এছাড়াও পড়া msxsl ব্যবহার XSLT স্টাইলশীট স্ক্রিপ্টিং: স্ক্রিপ্ট এবং JScript, সি # দিয়ে প্রসারিত হচ্ছে XSLT, এবং ভিসুয়াল বেসিক .NET


এটি ট্রান্সফরমার হিসাবে অ্যাপাচি এফওপির সাথে কাজ করে না। ত্রুটির বার্তা: তাত্ক্ষণিক পদ্ধতিতে কল পদ্ধতিতে আজ প্রথম যুক্তি হিসাবে একটি অবজেক্ট উদাহরণ প্রয়োজন
ট্রে ক্যারল

4
ওফস: এক্সটেনশন-এলিমেন্ট-উপসর্গ = "এমএসএক্সএমএল" এক্সটেনশন-এলিমেন্ট-প্রিফিক্স = "এমএসএক্সএসএল" হওয়া উচিত। আমার সিস্টেমেও কাজ করতে ব্যর্থ।
জয়

14

রূপান্তরটি চালাতে কি আপনার নিয়ন্ত্রণ রয়েছে? যদি তা হয় তবে আপনি বর্তমান তারিখে XSL এ যেতে পারেন এবং আপনার এক্সএসএল এর ভিতরে থেকে $ বর্তমান-তারিখ ব্যবহার করতে পারেন। নীচে আপনি কীভাবে আগত প্যারামিটারটি ঘোষণা করবেন, কিন্তু কীভাবে আপনি রূপান্তরটি চালাচ্ছেন তা জেনে আমি কীভাবে মানটি পাস করতে পারি তা বলতে পারি না।

<xsl:param name="current-date" />

উদাহরণস্বরূপ, ব্যাশ স্ক্রিপ্ট থেকে, ব্যবহার করুন:

xsltproc --stringparam current-date `date +%Y-%m-%d` -o output.html path-to.xsl path-to.xml

তারপরে, এক্সএসএল এ আপনি ব্যবহার করতে পারেন:

<xsl:value-of select="$current-date"/>

4
প্রকৃতপক্ষে, মানটি কীভাবে পাস করবেন তা সিস্টেমের উপর নির্ভরশীল। একটি সম্ভাব্য বিকল্প: সঙ্গে xsltproc UNIX- এর উপর, এটা হতে পারে: xsltproc --stringparam current-date `date +%Y-%m-%d` -o output.html path-to.xsl path-to.xml। কিছু সিস্টেম কেবল পরামিতি হিসাবে নেয় $param=value, তাই এই ক্ষেত্রে $current-date=`date +%Y-%m-%d`কোথাও। অথবা অন্যথায় আপনি যে কোনও এক্সএসএলটি প্রসেসর ব্যবহার করছেন তাতে প্যারামিটার নির্দিষ্ট করার উপায়গুলি সন্ধান করুন।
লিন্ডস

11
...
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:local="urn:local" extension-element-prefixes="msxsl">

    <msxsl:script language="CSharp" implements-prefix="local">
        public string dateTimeNow()
        {       
          return DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ"); 
        } 
    </msxsl:script>  
...
    <xsl:value-of select="local:dateTimeNow()"/>

8

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

<xsl:value-of select="java:util.Date.new()"/>

এটি জাভাটির ডেটা ক্লাসকে তারিখের আউটপুট বলবে। আপনি নিম্নলিখিত "জাভা:" সংজ্ঞাটি আপনার <xsl:stylesheet>ট্যাগটিতে না রাখলে এটি কাজ করবে না ।

<xsl:stylesheet [...snip...]
         xmlns:java="java"
         [...snip...]>

আমি আশা করি যে কাউকে সাহায্য করবে এই সহজ উত্তরটি আমার পক্ষে খুঁজে পাওয়া কঠিন ছিল।


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