0

I have a web.config file, which I want to transform using SlowCheetah. The relevant fragment looks like this:

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

I want to transform value BBB to CCC, so I wrote my Web.CCC.config transformation file:

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

Unfortunately, it results in CCC being inserted into <location path="ui/cms"> instead of <location path="WebServices"> - probably because it is the first one it locates in my web.config file.

How can I make SlowCheetah notice the different path parameter, and replace the correct node in my xml file?

Cœur
  • 37,241
  • 25
  • 195
  • 267
pmbanka
  • 1,902
  • 17
  • 24

1 Answers1

0

As it turns out, this can be obtained using xdt:Locator in a transformation file.

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

Hope it helps anyone. Rubber duck debugging seems to work even with SO.

pmbanka
  • 1,902
  • 17
  • 24