Я в тупике.Имея xml документ, такой как:
<Frag>
<DirRef Id="BeemzDir">
<Com Id="BEED24F05AB78FB588F61D4092654B6D" Guid="{A11AB356-2F45-4157-92EF-ED49F5BE0F70}">
<FileName Id="fil1" KeyPath="yes" Source="My.Exe" />
</Com>
<Com Id="FFF24F05AB78FB588F61D4092654CCC" Guid="{A11AB356-2F45-4157-92EF-ED49F5BE0F70}">
<FileName Id="fil2" KeyPath="yes" Source="My.Dll" />
</Com>
</DirRef>
</Frag>
<Frag>
<ComGroup Id="MyGroup">
<CompRef Id="BEED24F05AB78FB588F61D4092654B6D" />
<CompRef Id="FFF24F05AB78FB588F61D4092654CCC" />
</ComGroup>
</Frag>
Мне нужно использовать xslt, чтобы удалить элемент, в котором находится Source = "My.Exe".В этом случае удалите элемент "Com", где его атрибут id = BEED24F05AB78FB588F61D4092654B6D.
Я сделал это.Но что я не могу сделать, так это удалить элемент «CompRef», где Id = BEED24F05AB78FB588F61D4092654B6D.
Поэтому после преобразования я хочу, чтобы мой xml выглядел следующим образом:
<Frag>
<DirRef Id="BeemzDir">
<Com Id="FFF24F05AB78FB588F61D4092654CCC" Guid="{A11AB356-2F45-4157-92EF-ED49F5BE0F70}">
<FileName Id="fil2" KeyPath="yes" Source="My.Dll" />
</Com>
</DirRef>
</Frag>
<Frag>
<ComGroup Id="MyGroup">
<CompRef Id="FFF24F05AB78FB588F61D4092654CCC" />
</ComGroup>
</Frag>
Любая помощь будет принята.
Обновление
Вот некоторый xml, который удаляет элемент "FileName".
<xsl:template match="Com/FileName[contains(@Source,'My.Exe')='true']">
</xsl:template>
Так что это приводит к:
<Frag>
<DirRef Id="BeemzDir">
<Com Id="BEED24F05AB78FB588F61D4092654B6D" Guid="{A11AB356-2F45-4157-92EF-ED49F5BE0F70}">
</Com>
<Com Id="FFF24F05AB78FB588F61D4092654CCC" Guid="{A11AB356-2F45-4157-92EF-ED49F5BE0F70}">
<FileName Id="fil2" KeyPath="yes" Source="My.Dll" />
</Com>
</DirRef>
</Frag>
<Frag>
<ComGroup Id="MyGroup">
<CompRef Id="BEED24F05AB78FB588F61D4092654B6D" />
<CompRef Id="FFF24F05AB78FB588F61D4092654CCC" />
</ComGroup>
</Frag>
Изменение вышеуказанного xsl, вызывающего xsl: apply-template, ничего не делает, так как он застрял в узле, в котором он работает. Я не знаю, как сохранить идентификаторы, которые я хочу удалить, и затем выполнить циклчерез них.
Обновление 2
Можно удалить более одного узла, то есть несколько элементов "Com", где source = "MyExe".Кроме того, идентификатор автоматически генерируется, поэтому он будет отличаться при каждом запуске.