Próbuję oczyścić plik wxs wygenerowany przez heat.exe, stosując transformacje xml.Usuwanie niechcianych węzłów z pliku wxs przez zastosowanie transkryptu xslt
Poniżej znajduje się przykładowy plik wyjściowy pliku heat.exe.
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="APPFOLDER">
<Component Id="cmp78E9FF58917B1844F3E9315A285F3147" Guid="SOME-GUID">
<File Id="fil093D6D7CB723B5B62730D7B4E575F154" KeyPath="yes" Source="PQR.Some.dll" />
</Component>
<Component Id="cmp0B084126FAE7577FD84DB29766AC6C2B" Guid="SOME-GUID">
<File Id="filB20C8708D7EB02EDFBCC4D70F9FE7F8A" KeyPath="yes" Source="ABC.Another.dll" />
</Component>
<Component Id="cmp83BB1954DECD7D949AAE4ACA68806EC3" Guid="SOME-GUID">
<File Id="fil0E29FBFF7DB39F307A2EE19237A0A579" KeyPath="yes" Source="ABC.OneMore.dll" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="AppFiles">
<ComponentRef Id="cmp78E9FF58917B1844F3E9315A285F3147" />
<ComponentRef Id="cmp0B084126FAE7577FD84DB29766AC6C2B" />
<ComponentRef Id="cmp83BB1954DECD7D949AAE4ACA68806EC3" />
</ComponentGroup>
</Fragment>
</Wix>
Chcę usunąć węzły komponentów, których podrzędny węzeł pliku ma atrybut źródłowy zawierający ciąg "ABC". Wiem, jak znaleźć takie węzły przy użyciu prawidłowych wzorców dopasowania. Więc zanim usunę węzeł komponentu, chcę zapisać identyfikator komponentu, a następnie użyć go do usunięcia węzła ComponentRef z identyfikatorem, który właśnie nagrałem.
Czy jest sposób, w jaki mogę to osiągnąć dzięki transformacji XML? Myślę, że szukam czegoś, w którym mogę utworzyć zmienną, powiedzmy "X", aby przechowywać węzeł identyfikatora składnika, który usunę, i użyj "X", aby znaleźć węzły ComponentRef do usunięcia.
Ten pracował jak urok. Niesamowite @JLRishe. – vaibinewbee
To jest po prostu niesamowite, działa od razu. dzięki – sttaq
Jeśli chcesz usunąć więcej niż jeden element, po prostu dodaj więcej warunków do atrybutu dopasowania: ' ' –
HenningJ