xml - transformation of RSS date in XSLT -


कई आरएसएस-फीड्स से उत्पन्न & lt; pubDate & gt; के लिए मूल्य (xml में)

@ डीमित्र ने एक अच्छा समाधान प्रदान किया, जिसमें उनके जवाब में सप्ताह का दिन शामिल है:

यहां सवाल यह है कि कैसे substring () के लिए pubDate को उस उत्तर के अनुसार अनुकूलित करें जब सप्ताह का दिन pubDate का हिस्सा नहीं है, तो ऐसा है:

17 Feb 2009 00:05:25 +0100

इसके अतिरिक्त यह जानने के लिए सुविधाजनक होगा कि कैसे एक अतिरिक्त आरएसएस-नोड को लागू करने के लिए जैसे & lt; लिंक & gt; या & lt; शीर्षक & gt; उदाहरण के परिणामस्वरूप & lt; pubDate & gt; और & lt; लिंक & gt; (या उदा। & lt; title & gt; ) पर सॉर्ट किया जाएगा। फीडबैक के लिए धन्यवाद।

यदि आपके सभी pubDate के पास नहीं है सप्ताह के दिनों में आप केवल प्रत्येक उपस्ट्रिंग के शुरुआती बिंदु से क्रमबद्ध बयान से 5 अवयव लेते हैं:

  & lt; xsl: sort डेटा-प्रकार = "संख्या" क्रम = "अवरोही" का चयन करें = "concat (substring ( PubDate, 8,4), $ vMonths [@name = substring (वर्तमान () / pubDate, 4,3)] / @ num, substring (pubDate, 1,2), अनुवाद (पबडेट, 13,8) ':', '')) "/ & gt;   

हालांकि यदि आपके पास पबडेट प्रारूपों का मिश्रण है, और आपके पास दोनों हैं:

  & lt; pubDate & gt; 12 Feb 2009 01:58:03 GMT & lt; / pubDate & gt; & lt; pubDate & gt; मंगल, 13 फरवरी 2010 02:58:03 GMT & lt; / pubDate & gt;   

ऑरगेटिंग एक्सप्रेशंस के प्रारंभिक बिंदुओं को आपके प्रारूप के आधार पर सशर्त होना चाहिए।

XSLT 2.0 में आप बस एक xpath का उपयोग कर सकते हैं यदि फिर से स्टेटमेंट जैसे:

  substring (pubDate, यदि (substring (pubDate, 3,1) = '') तो 8 और 13, 4)   

यह जांचता है कि क्या कक्ष 3 में रिक्त स्थान है, जो कि के लिए मामला है प्रारूप के बिना सप्ताह के दिन, लेकिन सप्ताह के दिनों के साथ प्रारूप के लिए नहीं, और इसके आधार पर प्रारंभिक बिंदु निर्धारित करता है।

XSLT 1.0 में एक्सपेथ में कोई सशर्त अभिव्यक्ति नहीं है, लेकिन आप एक बूलियन अभिव्यक्ति के परिणाम के साथ गुणा करके एक ही परिणाम प्राप्त करें:

  substring (pubDate, (substring (pubDate, 3,1) = '') * 8 + (substring (pubDate, 5 , 1) = '') * 13, 4)   

यह सप्ताह के बिना और उपाध्यक्ष के बिना प्रारूप के लिए 1 * 8 + 0 * 13 = 8 की गणना करेगा सप्ताह के दिन के साथ प्रारूप के लिए 0 * 8 + 1 * 13 = 13

पूरी तरह से कथन के लिए यह करना:

  & lt; xsl: सॉर्ट डेटा-टाइप = "संख्या" ऑर्डर = "अवरोही" का चयन करें = "कॉन्सैट (सब्टिंग (पबडेट , $ VMonths [@name = substring (वर्तमान () ()) / पबडेट (सबस्ट्रिंग (पबडेट, 3,1) = '') * 8 + (सबस्ट्रिंग (पबडेट, 5,1) = '') * 13, 4) (सबबिंग (पबडेट, 3,1) = '') * 4 + (सबस्ट्रिंग (पबडेट, 5,1) = '') * 9, 3)] / @ num, ऑथिस्ट्रिंग (पबडेट, (उपकेंद्र (पबडेट, 3, 1) = '') * 1 + (substring (pubDate, 5,1) = '') * 6, 2), अनुवाद (उपकथ (pubDate, 13 (substring (pubDate, 3,1) = '') * 13 + (सबस्ट्रिंग (पबडेट, 5,1) = '') * 18, 8), ':', '')) "/>   

यहां काम करना सरल संस्करण है:


आपके दूसरे प्रश्न के लिए, इसके अलावा यह जानने के लिए सुविधाजनक होगा कि कैसे अतिरिक्त आरएसएस-नोड की तरह या सॉर्ट करने के लिए उदाहरण के लिए परिणामस्वरूप आउटपुट को सॉर्ट किया जाएगा और (या उदा।)।

आप आमतौर पर केवल & lt; xsl: sort select = "title" / & gt; हालांकि तिथि के आधार पर पिछले सॉर्टिंग पर विचार किया जाता है, यह तभी होगा जब आपके पास सटीक समान पबडेट पर 2 अलग शीर्षक होंगे, जो कि असंभव है क्योंकि तारीख में समय भी शामिल है।

Comments

Popular posts from this blog

Verilog Error: output or inout port "Q" must be connected to a structural net expression -

jasper reports - How to center align barcode using jasperreports and barcode4j -

c# - ASP.NET MVC - Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value -