我正在尝试使用Slow Cheetah来转换Windows计划任务配置文件。我只是想添加“重复”节点信息,如下所示:
ORIGINAL:
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2013-01-02T09:32:12.2196371</Date>
<Author>xxx</Author>
</RegistrationInfo>
<Triggers>
<CalendarTrigger>
<StartBoundary>2013-01-10T01:00:00</StartBoundary>
<Enabled>true</Enabled>
<ScheduleByDay>
<DaysInterval>1</DaysInterval>
</ScheduleByDay>
</CalendarTrigger>
</Triggers>
.....
</Task>
必需的附加XML
<CalendarTrigger>
<Repetition>
<Interval>PT300S</Interval>
</Repetition>
</CalendarTrigger>
为此,我有以下转换文件:
<?xml version="1.0" encoding="utf-16" ?>
<Task version="1.2">
<Triggers>
<CalendarTrigger xdt:Transform="Insert">
<Repetition>
<Interval>PT300S</Interval>
</Repetition>
</CalendarTrigger>
</Triggers>
</Task>
我遇到的问题是CalendarTrigger节点之外的所有属性都被删除(因此使得结果转换配置了无效的计划任务格式)。
我尝试过添加
xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xdt:Transform="SetAttributes" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"
到Task节点,但是然后在CalendarTrigger级别生成该属性(我不能将此属性放在原始属性上,因为我接着“源文档中没有元素匹配'/ Task / Triggers'”。 / p>
任何指针?
更新
问题似乎与 xmlns 属性隔离开来;如果我尝试将其包含在原始的“任务”节点中,我会得到“源文档中没有元素匹配'/任务/触发器'” - 但是将此属性更改为'xmlns2'可以正常工作并生成我需要的内容(虽然有'xmlns2'属性!)。这是Slow Cheetah的已知限制吗?有人知道潜在的解决方法吗?
答案 0 :(得分:0)
那是因为你的xdt:Transform="Insert"
是一个等级到高。
这应该有效:
<?xml version="1.0" encoding="utf-16" ?>
<Task xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<Triggers>
<CalendarTrigger>
<Repetition xdt:Transform="Insert">
<Interval>PT300S</Interval>
</Repetition>
</CalendarTrigger>
</Triggers>
</Task>