2012-12-14 2 views
5

나는이웹 설정 변환 조건/경기는 부모 노드의 속성에 따라 노드를 선택합니다

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <a> 
    <b> 
     <c> 
     <d> 
      <e name="UpdateLanguageProfile"> 
      <f xdt:Transform="Replace" xdt:Locator="Condition(/[email protected]='UpdateLanguageProfile')"> 
       stuff here 
      </f> 
      </e> 
     </d> 
     </c> 
    </b> 
    </a> 

그래서 나는 XDT 원하는처럼 그 보이는 변환이 : f를 노드를 선택 로케이터 만 부모 노드는 경우 지정된 값을 갖는 속성을가집니다.

XDT : 잘못된

/a/b/c/d/e/f[/[email protected]='UpdateLanguageProfile'] 

: 로케이터는 다음 XPath 식으로 번역됩니다.

부모 노드의 특성을 기반으로 f 노드를 선택하기 위해 조건에 ​​넣을 수있는 것은 XPath 대괄호입니다.

+0

당신이 XDT를 제거하면 발생합니다 로케이터를 완전히? 부모님이 name 속성을 지정해 주시면 변형이 올바르게 작동합니다. 여기에있는 것처럼 ... –

답변

12

대답은 xdt : Locator와 xdt : Transform이 동일한 노드에있을 필요가 없다는 것입니다. 그들은 지금까지 본 모든 예제에서 같은 노드에있을뿐입니다.

이 작업을 수행 할 수 있습니다

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <a> 
    <b> 
     <c> 
     <d> 
      <e name="UpdateLanguageProfile" xdt:Locator="Match(name)"> 
      <f xdt:Transform="Replace"> 
       stuff here 
      </f> 
      </e> 
     </d> 
     </c> 
    </b> 
    </a>