基于子节点的值在Web.config中选择节点变换 [英] Select node based on child node value in Web.config Transform

查看:208
本文介绍了基于子节点的值在Web.config中选择节点变换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下的XML在我的web配置,我想使用的web.config转换来选择要删除的属性,但我想选择的基础上的子元素之一的值去除的元素。

我的web.config是这样的:

 <结构>
   < Sitecore的>
       <调度>
          <代理类型=Sitecore.Tasks.DatabaseAgent>
             <参数说明=数据库>核心< /参数>
          < /剂>
          <代理类型=Sitecore.Tasks.DatabaseAgent>
             <参数说明=数据库>主< /参数>
          < /剂>
       < /调度>
    < / Sitecore的>
 < /结构>
 

我已经尝试了以下尝试选择要删除的基于子元素在第二剂元素<参数说明=数据库>主< /参数> 但没有成功。

 <结构>
   < Sitecore的>
       <调度>
          <! - 尝试1  - >
          <代理类型=Sitecore.Tasks.DatabaseAgent
                 XDT:转换=删除
                 XDT:定位器=的XPath(配置/ Sitecore的/计划/代理/参数[文本()='大师'])/>

          <! - 尝试2  - >
          <代理类型=Sitecore.Tasks.DatabaseAgent
                 XDT:转换=删除>
             <参数说明=数据库
                    XDT:定位器=的XPath([文本()='大师'])/>
          < /剂>
       < /调度>
    < / Sitecore的>
 < /结构>
 

解决方案

作为回答<一href="http://stackoverflow.com/questions/9707108/xdt-transform-locator-that-matches-subnode-content/9707298">this 的XDT问题:定位器属性需要使用条件语法。因此,需要选择是:

 &LT;代理类型=Sitecore.Tasks.DatabaseAgent
       XDT:转换=删除
       XDT:定位器=条件(参数/ @ DESC ='数据库'和参数/文()='大师')/&GT;
 

I have the following XML in my web config and I would like to select an attribute for removal using web.config transforms, but I would like to select the element for removal based on the value of one of the child elements.

My web.config is something like this:

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

I have tried the following to try to select the second agent element for deletion based on the child element <param desc="database">master</param> but with no success.

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

解决方案

As answered in this question the xdt:Locator attribute needs to use the Condition syntax. So the required selector is:

<agent type="Sitecore.Tasks.DatabaseAgent"
       xdt:Transform="Remove"
       xdt:Locator="Condition(param/@desc='database' and param/text()='master')" />

这篇关于基于子节点的值在Web.config中选择节点变换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆