2009-04-24 5 views
10

मेरे पास साइटकोर में डेटा टेम्पलेट dt1 है जिसमें "डेटा" अनुभाग में फ़ील्ड "हेडर" है। मेरे पास डेटा टेम्पलेट डीटी 2 भी है जिसमें "पोर्टल" अनुभाग में "हेडर" फ़ील्ड है। अंत में मेरे पास डेटा टेम्पलेट डीटी 3 है जो डीटी 1 और डीटी 2 दोनों बेस टेम्पलेट्स के रूप में उपयोग करता है।साइटकोर: विभिन्न वर्गों में समान फ़ील्ड नाम का उपयोग कैसे करें

मैं xslt में पोर्टल/हेडर की सामग्री कैसे ढूंढ सकता हूं?

मेरे कोड में, जब मैं < स्कैन लिखता हूं: टेक्स्ट फ़ील्ड = "हेडर"/>, मुझे डेटा/हेडर की सामग्री मिलती है (क्योंकि यह नोड पहले आता है)। मुझे पता है कि यह .NET में कैसे करें, लेकिन मुझे xslt का उपयोग करने की आवश्यकता है।

/कॉलप्रैट

+0

जब पूछ एक XML दस्तावेज में विशिष्ट नोड्स चयन करने के लिए एक XML दस्तावेज में ही प्रदान करनी चाहिए एक विशेष XPath अभिव्यक्ति की रचना करने के लिए कैसे। कृपया, XML दस्तावेज़ प्रदान करें जिससे आप नोड्स चुनना चाहते हैं। साथ ही, अच्छी तरह से वर्णन करें कि आपको कौन से नोड्स चुनने की आवश्यकता है। –

+1

धन्यवाद, लेकिन यह समस्या में से एक है, मुझे नहीं पता कि एक्सएमएल कैसा दिखता है। मैंने देखा कि मेरे प्रश्न का कोड भाग प्रदर्शित नहीं हो रहा था, मैंने इसे संपादित किया है और जैसा कि आप अब देख सकते हैं कि मैं xslt के साइटकोर के स्वयं के संस्करण का उपयोग कर रहा हूं। यदि कोई साइटकोर-एक्सएमएल देखने का तरीका जानता है तो यह शायद भी मदद करेगा। – Callprat

उत्तर

5

आप नहीं कर सकते।

और स्पष्ट रूप से मुझे .NET से ऐसा करने के किसी भी समर्थित तरीके से नहीं पता है।

यह सीधे Data Definition Reference से बाहर, खंड 2.1.1

2.1.1 डाटा खाका फील्ड्स

एक डेटा टेम्पलेट क्षेत्र उपयोगकर्ता इंटरफेस नियंत्रण और अन्य गुण कि को प्रभावित कैसे परिभाषित करता है सामग्री सामग्री संपादक और पृष्ठ संपादक में क्षेत्र व्यवहार करता है। फ़ील्ड के बारे में अधिक जानकारी के लिए, अध्याय 4, टेम्पलेट फ़ील्ड देखें।

नोट फ़ील्ड नामों को परिभाषित करते समय, सुनिश्चित करें कि वे फ़ील्ड अनुभागों के बीच भी अद्वितीय हैं। XSLT और .NET दोनों कोड फ़ील्ड से सामग्री निकालने के लिए, अनुभागों के संदर्भ के बिना अकेले फ़ील्ड नामों का उपयोग करते हैं।

+3

आप इसे एपीआई के साथ कर सकते हैं। आपको अनुभाग जानकारी के तहत इसकी तलाश करके फ़ील्ड आईडी खोजने की आवश्यकता है। फिर आप फ़ील्ड मान प्राप्त करने के लिए इसका उपयोग कर सकते हैं। – misteraidan

5

आप उनकी आईडी के आधार क्षेत्रों देख सकते हैं:

सी #:

string value = item["{00000000-0000-0000-000000000000}"]

या

Field field = item.Fields["{00000000-0000-0000-000000000000}"]

मैं इस प्रयास नहीं किया है, लेकिन मैं इसे लगता है एक्सएसएलटी में भी काम करेगा:

<sc:text field="{00000000-0000-0000-000000000000}" />

9

मुझे इस परियोजना के आसपास एक रास्ता मिला। मैं एक परियोजना पर काम कर रहा था। क्लाइंट द्वारा स्थापित किए गए टेम्पलेट्स में से एक "बाल्टी" था जिसमें विभिन्न फ़ील्ड अनुभाग थे, लेकिन बाल्टी के बीच के क्षेत्र समान थे। मैंने LINQ का उपयोग अनुभाग नाम से फ़ील्ड को समूहित करने के लिए किया, फिर फ़ील्ड के प्रत्येक समूह के साथ निपटाया।

var sections = currentItem.Fields.GroupBy(field => field.Section); 
foreach (var section in sections) 
{ 
    if (section.Key.StartsWith("Bucket")) 
    { 
     buckets.Add(new Bucket(section)); //I made a bucket item, 
              //and passed each IGrouping<Field> to it 
    } 
} 
8
item.Fields.Where(field => field.Section.ToUpper() == "META DATA" && 
          field.DisplayName.ToUpper() == "TITLE").First().Value; 
संबंधित मुद्दे