0

鉴于此 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>

我想<cron-expression>Trigger2.

使用此转换:

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

当项目构建时,我看到编译器警告:

源文档中没有元素匹配“/job-scheduling-data/schedule/trigger/cron[name='Trigger2']”。

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

我的项目配置为使用 Visual Studio 2015 中的 TransformXml 任务在构建时进行转换。

难道我做错了什么?

4

1 回答 1

0

@PingCrosby对另一个问题的回答有助于解决问题。解决方案是:

<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>
于 2017-02-22T18:46:27.070 回答