2012-12-14 74 views
5

我有一個轉變,看起來像這樣Web配置變換條件/匹配基於父節點的屬性中選擇一個節點

<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:定位被轉換爲下面的XPath表達式:

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

這是無效的。

所以問題是,我可以在條件中放入什麼,即XPath方括號,以便根據父節點中的屬性選擇f節點。

+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> 
相關問題