मैं xquery का उपयोग करके आने वाले एक्सएमएल (कतार से) के तत्वों को मान असाइन करने का प्रयास कर रहा हूं। आने वाला एक्सएमएल फॉर्म का है

<header><a></a><b></b><c></c></header>

मुझे उन्हें लक्ष्य प्रणाली के लिए निरंतर मूल्यों के साथ सेट करने की आवश्यकता है:

<header><a>1</a><b>2</b><c>3</c></header>

कोई विचार?

0
hakish 7 पद 2010, 09:26
आप यह कहना भूल जाते हैं कि उन "निरंतर" मूल्यों के पीछे क्या तर्क है।
 – 
user357812
7 पद 2010, 16:03
जैसा कि मैंने कहा कि लक्ष्य प्रणाली अपने आंतरिक प्रसंस्करण के लिए इसकी अपेक्षा करती है। मैं अनिवार्य रूप से एक तरफ मेनफ्रेम ऐप और दूसरी तरफ जावा ऐप के साथ मिडलवेयर पर काम कर रहा हूं
 – 
hakish
8 पद 2010, 09:53
यदि आप सैक्सन का उपयोग कर रहे हैं, तो आप अपने XQuery अभिव्यक्ति में saxon:transform() एक्सटेंशन फ़ंक्शन को कॉल कर सकते हैं ताकि आवश्यक परिवर्तन एक XSLT रूपांतरण में किया जा सके लेकिन एक युक्त XQuery मूल्यांकन के भाग के रूप में।
 – 
Dimitre Novatchev
9 पद 2010, 16:55

1 उत्तर

मुझे यकीन नहीं है कि मैं आपके प्रश्न को पूरी तरह से समझता हूं, लेकिन मुझे लगता है कि आप इनपुट की प्रतिलिपि बनाना चाहते हैं और कुछ तत्वों को संशोधित करना चाहते हैं। यह एक्सएसएलटी के साथ सबसे आसानी से किया जाएगा।

XQuery में ऐसा करने के लिए आप एक पुनरावर्ती फ़ंक्शन चाहते हैं जो प्रत्येक नोड को देखता है, यदि उपयुक्त हो तो इसे संशोधित करता है, और आउटपुट की प्रतिलिपि बनाता है। आपके विवरण से, मुझे लगता है कि आपके इनपुट में केवल तत्व नोड्स हैं, और इसलिए यह एकमात्र मामला है जिस पर मैंने विचार किया है:

declare function local:apply($node as element())
{
  typeswitch ($node)
  case element(a) return <a>1</a>
  case element(b) return <b>2</b>
  case element(c) return <c>3</c>
  default return element {name($node)} {local:apply($node/*)}
}
1
Oliver Hallam 7 पद 2010, 13:31