2013-02-05 2 views
5

웹 구성에 다음 XML이 있는데 web.config 변환을 사용하여 제거 할 특성을 선택하고 싶습니다. 그러나 제거 할 요소를 선택하고 싶습니다. 하위 요소 중 하나의 값을 기반으로합니다. 나는 자식 요소 <param desc="database">master</param>에 있지만 성공을 기반 삭제에 대한 두 번째 에이전트 요소를 선택하려고 다음 시도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> 

:

내 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

xdt:Locator 속성은 Condition 구문을 사용할 필요가 this question에 대답 이것은 당신의 설정을 제거합니다. 그래서 필요한 선택자는 다음과 같습니다 :

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

' master'과 일치 시키려면이 xpath가 더 정확해야합니다 :'param [@ desc = 'database']/text() = 'master'. 그렇지 않으면 ' 마스터'과 (와) 잠재적으로 일치 할 수 있습니다. –

-1

그냥 말에 /..을 추가, 그게 어떻게해야 ...

를 예를 들면,

+0

... 끝에 하나? –

+0

앞에서'//'가 필요할 수도 있지만'par ..'요소를 제거 할 수 있다면'/ ..'는 그것을해야합니다 – Martin

2

Sitecores 자신의 설정 패치를 사용하십시오. 여기에 보면, 자세한 내용은

<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

Sitecore 패치 기능은 내가 원하는 것이 아닙니다 내가 web.config 변환을 사용하여 환경에 따라 다른 web.config 파일을 만들려는 경우. 그래서 하나의 환경은 XML 노드를 제거하는 반면 다른 환경에서는 그대로 유지됩니다. –