我正在尝试使用SlowCheetah设置QuartzNet作业配置文件的转换 . QuartzNet要求xmlns属性出现在作业调度数据节点上,但是这个属性的存在似乎阻止了SlowCheetah运行转换 .
简化,这是我的调度配置的样子:
<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
<schedule>
<job>
<name>Job1</name>
<group>Group1</group>
<description>Description</description>
<job-type>MySample.MyJob, MySample</job-type>
</job>
<trigger>
<cron>
<name>DefaultTrigger</name>
<job-name>Job1</job-name>
<job-group>Group1</job-group>
<cron-expression>0 0 4 * * ? *</cron-expression>
<time-zone>GMT Standard Time</time-zone>
</cron>
</trigger>
</schedule>
</job-scheduling-data>
配置转换如下所示:
<job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" >
<cron-expression xdt:Transform="Replace" xdt:Locator="XPath(/job-scheduling-data/schedule/trigger/cron/cron-expression[../name/text() = 'DefaultTrigger'])">"##DAILY_SCHEDULE##</cron-expression>
</job-scheduling-data>
除非我删除,否则转换不起作用
xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
从原始配置文件和转换文件,或指定名称空间,例如 xmlns:ns1
. 这两种方法中的任何一种的问题是Quartz需要 xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
存在 .
我也尝试使用带有 local-name()
的XPath表达式来试图忽略表达式语法中的命名空间,但无济于事 .
任何想法如何解决这个问题?
1 回答
在我看来,你的XPath表达式应该是:
因为它匹配
name
而不是job-name
.下面可怕的命名空间 - 忽略XPath表达式也应该有效: