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