Thursday 15 January 2015

XML Key/Value manipulation using XSLT -


मेरे पास ऐसा डेटा है -

  & lt; item & gt; & LT; नाम & gt; बॉब & lt; / नाम & gt; & LT; fav_food & gt; पिज्जा & lt; / fav_food & gt; & LT; कुंजी & gt; {वेतन} & lt; / कुंजी & gt; & LT; मान & gt 1000 & lt; / मूल्य & gt; & Lt; / मद & gt;   

मैं अपना आउटपुट इस तरह दिखना चाहता हूं -

  & lt; item & gt; & LT; नाम & gt; बॉब & lt; / नाम & gt; & LT; fav_food & gt; पिज्जा & lt; / fav_food & gt; & LT; वेतन & gt 1000 & lt; / वेतन & gt; & Lt; / मद & gt;   

संपादित करें, सिर्फ एक मान के बजाय, अगर मेरे पास अन्य टैग थे, जिनमें से केवल एक को बिना किसी कमी के होने की गारंटी दी जाती है, मेरे परिणत में क्या गलत है? मैं सीन की एक्सएसएलटी 1.0 का प्रयोग एक स्रोत के रूप में रूपांतरित कर रहा हूं।

इनपुट -

  & lt; item & gt; & LT; नाम & gt; बॉब & lt; / नाम & gt; & LT; fav_food & gt; पिज्जा & lt; / fav_food & gt; & LT; कुंजी & gt; {वेतन} & lt; / कुंजी & gt; & Lt; मान / & gt; & LT; मान 2 & gt 1000 & lt; / मान 2 & gt; & Lt; मान 3 / & gt; & Lt; / मद & gt;   

वांछित आउटपुट -

  & lt; item & gt; & LT; नाम & gt; बॉब & lt; / नाम & gt; & LT; fav_food & gt; पिज्जा & lt; / fav_food & gt; & LT; वेतन & gt 1000 & lt; / वेतन & gt; & Lt; / मद & gt;   

मेरा वर्तमान परिवर्तन -

  & lt; xsl: स्टाइलशीट संस्करण = "2.0" xmlns: xsl = "http://www.w3.org/ 1999 / XSL / रूपांतरण "& gt; & Lt; xsl: आउटपुट इंडेंट = "हां" omit-xml-declaration = "yes" / & gt; & Lt; xsl: स्ट्रिप-स्पेस तत्व = "*" / & gt; & Lt; xsl: टेम्पलेट मैच = "@ * | नोड ()" & gt; & LT; XSL: प्रतिलिपि & gt; & Lt; xsl: लागू-टेम्पलेट चुनें = "@ * | नोड ()" / & gt; & Lt; / XSL: प्रतिलिपि & gt; & Lt; / XSL: टेम्पलेट & gt; & Lt; xsl: टेम्पलेट मैच = "कुंजी" & gt; & Lt; xsl: तत्व नाम = "{substring-before (substring-after (।, '{'), '}')}" & Gt; & LT; XSL: चुनें & gt; & Lt; xsl: जब परीक्षण = "मान! = ''" & Gt; & Lt; xsl: मान-का चयन करें = "निम्नलिखित- sibling :: value" / & gt; & Lt; / XSL: जब & gt; & Lt; xsl: जब test = "value2! = ''" & Gt; & Lt; xsl: मान-का चयन करें = "निम्नलिखित- sibling :: value2" / & gt; & Lt; / XSL: जब & gt; & Lt; xsl: जब test = "value3! = ''" & Gt; & Lt; xsl: मान-का चयन करें = "निम्नलिखित- sibling :: value3" / & gt; & Lt; / XSL: जब & gt; & Lt; / XSL: चुनें & gt; & Lt; / XSL: तत्व & gt; & Lt; / XSL: टेम्पलेट & gt; & Lt; / XSL: स्टाइलशीट & gt;    

एक XSLT 1.0 समाधान ...

  & Lt; xsl: स्टाइलशीट संस्करण = "1.0" xmlns: xsl = "http://www.w3.org/1999/XSL/transform" & gt; & Lt; xsl: आउटपुट इंडेंट = "हां" omit-xml-declaration = "yes" / & gt; & Lt; xsl: स्ट्रिप-स्पेस तत्व = "*" / & gt; & Lt; xsl: टेम्पलेट मैच = "@ * | नोड ()" & gt; & LT; XSL: प्रतिलिपि & gt; & Lt; xsl: लागू-टेम्पलेट चुनें = "@ * | नोड ()" / & gt; & Lt; / XSL: प्रतिलिपि & gt; & Lt; / XSL: टेम्पलेट & gt; & Lt; xsl: टेम्पलेट मैच = "मान" / & gt; & Lt; xsl: टेम्पलेट मैच = "कुंजी" & gt; & Lt; xsl: तत्व नाम = "{substring-before (substring-after (।, '{'), '}')}" & Gt; & Lt; xsl: मान-का चयन करें = "निम्नलिखित- sibling :: value" / & gt; & Lt; / XSL: तत्व & gt; & Lt; / XSL: टेम्पलेट & gt; & Lt; / XSL: स्टाइलशीट & gt;   

अपडेट

यहां भी एक XSLT 2 समाधान है यह निहित नहीं है।

  & lt; xsl: स्टाइलशीट संस्करण = "2.0" xmlns: xsl = "http://www.w3.org/1999/XSL/Transform" xmlns: fn = " http://www.w3.org/2005/xpath-functions"> & Lt; xsl: आउटपुट इंडेंट = "हां" omit-xml-declaration = "yes" / & gt; & Lt; xsl: स्ट्रिप-स्पेस तत्व = "*" / & gt; & Lt; xsl: टेम्पलेट मैच = "तत्व ()" & gt; & LT; XSL: प्रतिलिपि & gt; & Lt; xsl: लागू-टेम्पलेट चुनें = "@ *, नोड ()" / & gt; & Lt; / XSL: प्रतिलिपि & gt; & Lt; / XSL: टेम्पलेट & gt; & Lt; xsl: टेम्पलेट मैच = "विशेषता () | पाठ () | टिप्पणी () | प्रोसेसिंग-निर्देश ()" & gt; & LT; XSL: कॉपी / & gt; & Lt; / XSL: टेम्पलेट & gt; & Lt; xsl: टेम्पलेट मैच = "मान" / & gt; & Lt; xsl: टेम्पलेट मैच = "कुंजी" & gt; & Lt; xsl: तत्व नाम = "{fn: replace (।, '^ \ {(। *) \} $', '$ 1')}" & gt; & Lt; xsl: मान-का चयन करें = "निम्नलिखित- sibling :: value" / & gt; & Lt; / XSL: तत्व & gt; & Lt; / XSL: टेम्पलेट & gt; & Lt; / XSL: स्टाइलशीट & gt;    

No comments:

Post a Comment