2012-12-14 18 views
5

Tôi có một chuyển đổi mà trông như thế nàyWeb điều kiện chuyển đổi config/trận để chọn một node dựa trên thuộc tính nút cha

<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> 

Vì vậy, tôi muốn xdt: Locator để chọn nút f chỉ khi node cha có một thuộc tính với giá trị được chỉ định.

Các xdt: Locator được dịch sang biểu thức xpath sau:

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

Đó là không hợp lệ.

Câu hỏi đặt ra là, tôi có thể đặt điều kiện gì vào Điều kiện, đó là các dấu ngoặc vuông XPath, để chọn nút f dựa trên thuộc tính trong nút cha.

+0

xảy ra nếu bạn loại bỏ các xdt gì: Locator hoàn toàn? Đối với tôi, biến đổi hoạt động chính xác miễn là cha mẹ có thuộc tính tên được chỉ định, như bạn có ở đây ... –

Trả lời

12

Câu trả lời là xdt: Locator và xdt: Transform không cần phải nằm trên cùng một nút. Chúng chỉ xảy ra trên cùng một nút trong mọi ví dụ mà tôi từng thấy.

Bạn có thể làm điều này:

<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>