应用XDT基于鉴于这种XML配置文件的同级元素值

问题描述:

变换:应用XDT基于鉴于这种XML配置文件的同级元素值

<job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" version="2.0"> 
    <schedule> 
    <trigger> 
     <cron> 
     <name>Trigger1</name> 
     <cron-expression>0 0 1 * * ?</cron-expression> 
     </cron> 
    </trigger> 
    <trigger> 
     <cron> 
     <name>Trigger2</name> 
     <cron-expression>0 0 2 * * ?</cron-expression> 
     </cron> 
    </trigger> 
    </schedule> 
</job-scheduling-data> 

我想为Trigger2变换<cron-expression>值。

使用这种变换:

<job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <schedule> 
    <trigger> 
     <cron> 
     <name>Trigger2</name> 
     <cron-expression 
      xdt:Transform="Replace" 
      xdt:Locator="XPath(/job-scheduling-data/schedule/trigger/cron[name='Trigger2'])">0 0 3 * * ?</cron-expression> 
     </cron> 
    </trigger> 
    </schedule> 
</job-scheduling-data> 

当生成项目,我看到编译器警告:

源文档中的任何元素 “/作业调度数据/日程表/触发匹配/ cron的[名称= '触发2']”。

XPath查询似乎是正确的,但该规则从未应用(因此编译器警告)。

我的项目配置为使用的TransformXML任务在Visual Studio 2015年

我是不是做错了什么构建变换?

@PingCrosby answer到另一个问题帮助解决问题。解决办法是:

<job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <schedule> 
    <trigger> 
     <cron xdt:Locator="XPath(//*[local-name()='job-scheduling-data'] 
           /*[local-name()='schedule'] 
           /*[local-name()='trigger'] 
           /*[local-name()='cron'] 
            [*[local-name() = 'name'] = 'Trigger2'])"> 
     <cron-expression xdt:Transform="Replace">0 0 3 * * ?</cron-expression> 
     </cron> 
    </trigger> 
    </schedule> 
</job-scheduling-data>