2016-01-22 18 views
0

我有一个web.config文件,我想使用SlowCheetah进行转换。有关片段看起来是这样的:SlowCheetah transfroms我的xml中的错误元素

<configuration> 
    <location path="ui/cms"> 
     <system.web> 
      <authorization> 
       <allow roles="AAA" /> 
      </authorization> 
     </system.web> 
    </location> 
    <location path="WebServices"> 
     <system.web> 
      <authorization> 
       <allow roles="BBB" /> 
      </authorization> 
     </system.web> 
    </location> 
</configuration> 

我想变换值BBBCCC,所以我写了我的Web.CCC.config转换文件:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <location path="WebServices"> 
     <system.web> 
      <authorization> 
       <allow roles="CCC" xdt:Transform="Replace" /> 
      </authorization> 
     </system.web> 
    </location> 
</configuration> 

不幸的是,它会导致CCC插入<location path="ui/cms">代替<location path="WebServices"> - 可能是因为它是我在web.config文件中找到的第一个。

如何让SlowCheetah注意到不同的path参数,并在我的xml文件中替换正确的节点?

回答

0

事实证明,这可以通过在转换文件中使用xdt:Locator来获得。

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <location path="WebServices" xdt:Locator="Match(path)> 
     <system.web> 
      <authorization> 
       <allow roles="CCC" xdt:Transform="Replace" /> 
      </authorization> 
     </system.web> 
    </location> 
</configuration> 

希望它可以帮助任何人。即使是SO,Rubber duck debugging似乎也能工作。