2013-02-05 66 views
5

मेरे पास मेरी वेब कॉन्फ़िगरेशन में निम्न XML है और मैं web.config ट्रांसफॉर्म का उपयोग करके हटाने के लिए एक विशेषता का चयन करना चाहता हूं, लेकिन मैं हटाने के लिए तत्व का चयन करना चाहता हूं बाल तत्वों में से एक के मूल्य के आधार पर।Web.config में बच्चे नोड मान के आधार पर नोड का चयन करें

<configuration> 
    <sitecore> 
     <scheduling> 
      <agent type="Sitecore.Tasks.DatabaseAgent"> 
      <param desc="database">core</param> 
      </agent> 
      <agent type="Sitecore.Tasks.DatabaseAgent"> 
      <param desc="database">master</param> 
      </agent> 
     </scheduling> 
    </sitecore> 
</configuration> 

मैं चाइल्ड तत्व <param desc="database">master</param> पर है, लेकिन कोई सफलता के साथ आधारित हटाने के लिए दूसरे एजेंट तत्व का चयन करने की कोशिश करने के लिए निम्न की कोशिश की है:

मेरे web.config कुछ इस तरह है।

<configuration> 
    <sitecore> 
     <scheduling> 
      <!-- Attempt 1 --> 
      <agent type="Sitecore.Tasks.DatabaseAgent" 
       xdt:Transform="Remove" 
       xdt:Locator="XPath(configuration/sitecore/scheduling/agent/param[text()='master'])"/> 

      <!-- Attempt 2 --> 
      <agent type="Sitecore.Tasks.DatabaseAgent" 
       xdt:Transform="Remove"> 
      <param desc="database" 
        xdt:Locator="XPath([text()='master'])"/> 
      </agent> 
     </scheduling> 
    </sitecore> 
</configuration> 

उत्तर

6

रूप this question में जवाब xdt:Locator विशेषता Condition सिंटैक्स का उपयोग करने की जरूरत है। तो आवश्यक चयनकर्ता है:

<agent type="Sitecore.Tasks.DatabaseAgent" 
     xdt:Transform="Remove" 
     xdt:Locator="Condition(param/@desc='database' and param/text()='master')" /> 
+0

यदि आप ' मास्टर 'से मेल खाना चाहते हैं, तो यह xpath अधिक सटीक होगा:' param [@ desc = 'डेटाबेस']/text() = 'master''। अन्यथा, आप संभावित रूप से ' मास्टर' से मिलान कर सकते हैं। –

-1

बस अंत पर /.. जोड़ने के लिए, कि यह करना चाहिए ..

उदा

XPath(configuration/sitecore/scheduling/agent/param[text()='master']/..) 
+0

... किस के अंत में? –

+0

आपको मोर्चे पर '//' की आवश्यकता हो सकती है, लेकिन यदि आप अपने चयन के साथ 'param' तत्व को हटा सकते हैं, तो '/ ..' इसे करना चाहिए – Martin

2

बस साइटकोर्स का स्वयं कॉन्फ़िगर पैचर का उपयोग करें। अधिक जानकारी के लिए

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> 
    <sitecore> 
    <scheduling> 
     <agent patch:instead="*[@type='Sitecore.Tasks.DatabaseAgent' and param='master']"> 
     </agent> 
    </scheduling> 
</sitecore> 
</configuration> 

, यहाँ देखो:: यह अपनी सेटिंग निकाल देंगे

http://intothecore.cassidy.dk/2009/05/working-with-webconfig-include-files-in.html http://www.thescrewballdivision.com/playing-with-sitecore-include-files

+0

साइटकोर पैचिंग सुविधा वास्तव में मैं नहीं चाहता हूं जैसा कि मैं web.config का उपयोग करना चाहता हूं पर्यावरण पर आधारित विभिन्न web.config फ़ाइलों को बनाने के लिए। तो एक पर्यावरण एक्सएमएल नोड को हटा देगा, जबकि यह एक और पर्यावरण के लिए छोड़ दिया जाएगा। –