Slow Cheetah转换删除了XMLNS属性

时间:2013-03-12 17:50:03

标签: xslt slowcheetah

我正在尝试使用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的已知限制吗?有人知道潜在的解决方法吗?

1 个答案:

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