SlowCheetah 在我的 xml 中转换了错误的元素

SlowCheetah transforms wrong element in my xml

我有一个 web.config 文件,我想使用 SlowCheetah 对其进行转换。相关片段如下所示:

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

我想将值 BBB 转换为 CCC,所以我写了我的 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 文件中的正确节点?

事实证明,这可以在转换文件中使用 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>

希望对大家有所帮助。 Rubber duck debugging 似乎与 SO 一起工作。