के साथ तत्वों की गणना करने के लिए मुझे एक XML फ़ाइल में तत्वों की संख्या गिनने की आवश्यकता है, जिसमें एक विशेष मान है (विशिष्टता को सत्यापित करने के लिए)। एक्सएमएल फ़ाइल इस तरह दिखती है:XSLT किसी दिए गए मान
संपादित करें: मैंने मूल "सरलीकृत" एक्सएमएल को वास्तविक बालों वाली गड़बड़ी के साथ किसी को डिज़ाइन किया है। दुर्भाग्यवश, यह संपादित किए जाने तक सभी पिछले उत्तर वास्तव में भ्रमित और गलत बनाने जा रहा है।
<root>
<ac>
<Properties>
<Property Name="Alive">
<Properties>
<Property Name="ID">
<Properties>
<Property Name="Value">
<long>11007</long>
</Property>
</Properties>
</Property>
</Properties>
</Property>
<Property Name="Dead">
<Properties>
<Property Name="ID">
<Properties>
<Property Name="Value">
<long>11008</long>
</Property>
</Properties>
</Property>
</Properties>
</Property>
...
<Property Name="MostlyDeadAllDay">
<Properties>
<Property Name="ID">
<Properties>
<Property Name="Value">
<long>99001</long>
</Property>
</Properties>
</Property>
</Properties>
</Property>
</Properties>
</ac>
</root>
मैं एक चर को देखने के लिए कैसे जिंदा/मृत स्तर पर संपत्तियों की कई लंबे मूल्य (आईडी) के रूप में टेम्पलेट पैरामीटर में परिभाषित परिभाषित करने के लिए कोशिश कर रहा हूँ। इन पंक्तियों के साथ कुछ (हालांकि मुझे लगता है यह गलत है) ...
<xsl:param name="parPropId"/>
<xsl:variable name="countProperties">
<xsl:value-of select="count(/root/ac/
Properties/Property/
Properties/Property[@Name = 'ID']/
Properites/Property[@Name = 'Value']/long = $parPropId)"/>
</xsl:variable>
एक से अधिक संपत्ति "आईडी" स्तर पर परिभाषित तत्वों हो सकता है। लेकिन मैं काफी हद तक निश्चित हूं कि मैं "आईडी" के तहत केवल एक संपत्ति तत्व ("मान") पर और "मूल्य" के तहत केवल एक "लंबा" तत्व पर भरोसा कर सकता हूं।
[अस्वीकरण] जो भी समग्र XML फ़ाइल डिज़ाइन किया गया है, मैं वास्तव में काम कर रहा हूं, मुझे पता नहीं था कि XML को कैसे व्यवस्थित किया जाए (उदाहरण के लिए, गुणों के बनाम गुणों का पिछला उपयोग)। मुझे डर है कि मेरी एक्सएसएलटी सोच अस्थायी रूप से लगी हुई है :) नतीजतन। [/ अस्वीकरण]
XPath अभिव्यक्ति आपने "गलत" क्यों दिखायी है? मुझे इसके साथ कुछ भी गलत नहीं दिख रहा है। – Cerebrus
सुनिश्चित नहीं है। मैंने उपरोक्त एक्सएमएल को सरल बना दिया। वास्तविक xpath यह है: "/// गुण/संपत्ति/गुण/संपत्ति [@ नाम = 'आईडी']/गुण/संपत्ति [@ नाम = 'मान']/लंबा"। यदि आप सही हैं, तो मैं "[long = $ parPropId]" के साथ "/ long" को प्रतिस्थापित कर सकता हूं। गलत लगता है क्योंकि इससे दो "[]" ओप एक साथ सही होंगे। –
मैंने सत्यापित किया कि वर्टेक का टेक्स्ट() सही टेक्स्ट देता है (यानी "/// गुण/संपत्ति/गुण/संपत्ति [@ नाम = 'आईडी']/गुण/संपत्ति [@ नाम = 'मान']/लंबा/पाठ () "मेरी आईडी प्राप्त करता है, लेकिन उसकी विधि का उपयोग करके मेरी गिनती अभी भी विफल रही है। –