2

我正在尝试使用 Slow Cheetah 来转换 Windows 计划任务配置文件。我只是想添加“重复”节点信息,如下所示:

原来的:

<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'”)。

任何指针?

更新:

该问题似乎与xmlns属性有关;如果我尝试将其包含在原始文件的“任务”节点中,我会得到“源文档中没有元素匹配 '/Task/Triggers'” - 但是将此属性更改为 'xmlns2' 可以正常工作并产生我需要的内容(尽管带有“xmlns2”属性!)。这是慢猎豹的已知限制吗?有人知道潜在的解决方法吗?

4

1 回答 1

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>
于 2013-03-12T19:25:25.773 回答