基于兄弟元素值应用 XDT 变换
Applying XDT transform based on sibling element value
鉴于此 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>
构建项目时,我看到编译器警告:
No element in the source document matches
'/job-scheduling-data/schedule/trigger/cron[name='Trigger2']'.
XPath 查询似乎正确,但从未应用该规则(因此出现编译器警告)。
我的项目配置为在 Visual Studio 2015 年使用 TransformXml 任务构建时进行转换。
我是不是做错了什么?
@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>
鉴于此 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>
构建项目时,我看到编译器警告:
No element in the source document matches '/job-scheduling-data/schedule/trigger/cron[name='Trigger2']'.
XPath 查询似乎正确,但从未应用该规则(因此出现编译器警告)。
我的项目配置为在 Visual Studio 2015 年使用 TransformXml 任务构建时进行转换。
我是不是做错了什么?
@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>