0

즉, 다음 web.config xml에서 'Elmah'로 시작하는 type 속성을 가진 모든 요소를 ​​제거하려고합니다. 더 XPath에 해당 필요하지 않기 때문에XML-Document-Transform을 사용하여 web.config에서 Elmah 모듈을 제거하는 방법은 무엇입니까?

<httpModules> 
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> 
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> 
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> 
</httpModules> 

나는

<add xdt:Locator="XPath([starts-with(@type,'Elmah.')" xdt:Transform="Remove"/> 

포기하고 단지 전체 HttpModules는 요소를 제거하기 전에, 다양한 오류, 변환의 기본 여러 조합 구조를 시도했습니다.

답변

1

각 모듈을 개별적으로 제거해 보셨습니까?

<add name="ErrorLog" xdt:Locator="Match(name)" xdt:Transform="Remove"/> 
<add name="ErrorMail" xdt:Locator="Match(name)" xdt:Transform="Remove"/> 
<add name="ErrorFilter" xdt:Locator="Match(name)" xdt:Transform="Remove"/> 
+0

나는 이론적으로 항상 제거해야 할 부분을 항상 알 필요는 없다는 것을 피하려고했습니다. – ProfK

3

XPath 로케이터는 정규화 된 XPath 위치를 예상하므로 변환이 현재 어떤 요소와도 일치하지 않습니다. 대신 (예상 상대 XPath를) 조건 로케이터를 사용하는 경우, 그것은 일치해야합니다 :

<add xdt:Locator="Condition(starts-with(@type,'Elmah.')" xdt:Transform="RemoveAll"/> 

참고도 그 XDT : 당신이에서 removeAll 사용할 필요가 있으므로, 첫 번째 일치하는 요소에 작동 제거 변환 당신이 원하는 것을 얻을 수 있습니다.

msdn의 summary은이 문제를 매우 잘 설명합니다.

관련 문제