Temat: problem z xslt
dzięki za zainteresowanie, mam coś takiego
<obiekt>
<grupa1>
<podgrupa1>
<element1 />
</podgrupa1>
</grupa1>
<grupa2>
<element2 />
</grupa2>
...
</obiekt>
<obiekt>
<grupa3>
<podgrupa3>
<podpodgrupa3>
<element3 />
...
czyli jak raczyłeś wspomnieć "skopanego xml'a", niestety nie do przeróbki :)
Chciałbym z tego osiągnąć takie coś:
<grupa1>
<podgrupa1>
<element1 ob1/>
<element1 ob2/>
<element1 ob3/>
...
</podgrupa1>
</grupa1>
<grupa2>
<element2 ob1/>
<element2 ob2/>
<element2 ob3/>
...
czyli w skrócie pozbierać elementy o takiej samej ścieżce z <obiekt'ów> i wrzucić je do jednego wora.
Tak jak wspomniałeś, można zrobić templaty np.
<xsl:template match="/obiekt/grupa">
<xsl:template match="/obiekt/grupa/podgrupa">
<xsl:template match="/obiekt/grupa/podgrupa/element">
, ale różnych match'ów jest dużo za dużo. Moim pomysłem było przejrzeć /obiekt[1]/, wyznaczyć z niego ścieżkę każdego noda i zaaplikować ją do wszystkich elementów o takiej samej ścieżce przez <xsl:call-template>.
Dodam jeszcze raz, ze rozmiary pliku xml są bardzo duże. Eksperymentalnie sprawdziłem np. że rozwiązanie z template'ami (zaproponowane i dotychczasowe) otwiera się ~40s, natomiast to moje (z wpisaną ścieżką na stałe, bo nie wiem jeszcze jak ją przekazywać) ~3s, więc jest o co walczyć ;)
Krzysztof Kawa edytował(a) ten post dnia 28.02.10 o godzinie 13:19