5

我的 Web 配置中有以下 XML,我想使用 web.config 转换选择要删除的属性,但我想根据其中一个子元素的值选择要删除的元素。

我的 web.config 是这样的:

<configuration>
   <sitecore>
       <scheduling>
          <agent type="Sitecore.Tasks.DatabaseAgent">
             <param desc="database">core</param>
          </agent>
          <agent type="Sitecore.Tasks.DatabaseAgent">
             <param desc="database">master</param>
          </agent>
       </scheduling>
    </sitecore>
 </configuration>

我尝试了以下尝试根据子元素选择要删除的第二个代理元素,<param desc="database">master</param>但没有成功。

<configuration>
   <sitecore>
       <scheduling>
          <!-- Attempt 1 -->
          <agent type="Sitecore.Tasks.DatabaseAgent"
                 xdt:Transform="Remove"
                 xdt:Locator="XPath(configuration/sitecore/scheduling/agent/param[text()='master'])"/>

          <!-- Attempt 2 -->
          <agent type="Sitecore.Tasks.DatabaseAgent"
                 xdt:Transform="Remove">
             <param desc="database"
                    xdt:Locator="XPath([text()='master'])"/>
          </agent>
       </scheduling>
    </sitecore>
 </configuration>
4

3 回答 3

6

正如在这个问题中回答的那样,xdt:Locator属性需要使用Condition语法。所以所需的选择器是:

<agent type="Sitecore.Tasks.DatabaseAgent"
       xdt:Transform="Remove"
       xdt:Locator="Condition(param/@desc='database' and param/text()='master')" />
于 2013-02-06T14:41:40.413 回答
2

只需使用 Sitecores 自己的配置修补程序。这将删除您的设置:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <scheduling>
       <agent patch:instead="*[@type='Sitecore.Tasks.DatabaseAgent' and param='master']">
       </agent>
    </scheduling>
 </sitecore>
</configuration>

有关更多信息,请查看此处:

http://intothecore.cassidy.dk/2009/05/working-with-webconfig-include-files-in.html http://www.thescrewballdivision.com/playing-with-sitecore-include-files

于 2013-02-06T07:01:44.430 回答
-1

只需添加/..到最后,应该这样做..

例如

XPath(configuration/sitecore/scheduling/agent/param[text()='master']/..)
于 2013-02-06T00:00:47.490 回答