xslt:通过读取其他值的形式在不同节点中添加元素/属性

时间:2017-11-08 07:39:43

标签: xslt wix heat

我有以下xml文档

XML

<Wix>
  <Fragment>
    <DirectoryRef Id="TARGETDIR">
        <Component Id="JA" Name="MY_XYZ">
            <File/>
        </Component>
        <Component Id="ZH" Name="MY_ABC">
            <File/>
        </Component>
  </Fragment>

  <Fragment>
    <ComponentGroup Id="COMPREF">
        <ComponentRef />
        <ComponentRef />
    </ComponentGroup>
  </Fragment>
</Wix>

这里我想读取组件属性Name的值,并使用该值来设置ComponentRef的属性。所以componentref应该是这样的

所需输出

<ComponentRef SomeAttr="MY_XYZ"/>
<ComponentRef SomeAttr="MY_ABC"/>

如何使用XSLT实现这一目标?

1 个答案:

答案 0 :(得分:0)

根据您的其他需求,您可以使用strip-space和apply-templates来使用position()来使用ComponentRef的{​​{1}}子元素的索引来查找{{1}具有相同索引的子项:

ComponentGroup

或者您需要将第二个模板写为

Component