XML / XLST parę pytań filtrowanie danych - sterownik

0

witam.
z racji tego iż nie wszystkie generatory XML działają jednakowo co jakiś czas jest problem. tym razem nie wiem jak się do tego zabrać więc proszę o pomoc.
mam do przygotowania sterownik dla XML, już generalnie prawie wszystko mam ogarnięte, ale....
muszę rozdzielić jako osobne pozycje kategorie produktów:

<category id="1214553901" xml:lang="pol" name="Stoły/Kawowe"/>

normalnie mam to zrobione w ten sposób:

<cat>
<xsl:for-each select="category">
<xsl:value-of select="@name"/>
</xsl:for-each>
</cat>

jednak dla jednej formy potrzebuje rozbić kategorie osobno na kategorię główną: stoły, oraz na kategorię podrzędną: Kawowe.
za chiny ludowe nie wiem ja to wykonać i tutaj jest moja prośba nr 1 o pomoc lub jakieś naprowadzenie.

sprawa 2 tyczy się filtrowania. towar w XML występuje na kilku magazynach 0, 1, 2, 3, 4.
struktura XML wygląda następująco:

offer file_format="IOF" generated="2017-02-01 05:29:32"  version="2.5" extensions="no"><products language="pol">
<product id="13" currency="PLN"><producer id="1461825879"/>
<category id="1214553901" xml:lang="pol" name="Stoły/Kawowe"/>
 <iaiext:category_translation xml:lang="pol" value="Stoły/Kawowe"/> 
 <iaiext:category_translation xml:lang="eng" value="Tables/Coffee Table"/> 
 <iaiext:category_translation xml:lang="ger" value="Tischen/Couchtische"/> 
<unit id="0" xml:lang="pol" name="szt."/>
 <iaiext:unit_translation xml:lang="pol" value="szt."/> 
 <iaiext:unit_translation xml:lang="eng" value="szt."/> 
 <iaiext:unit_translation xml:lang="ger" value="szt."/> 
<description><name xml:lang="eng"><![CDATA[ALTAVOLA No 2.B 120×60 cm]]></name>
<name xml:lang="ger"><![CDATA[ALTAVOLA NO. 2.B 120×60 cm]]></name>
<name xml:lang="pol"><![CDATA[ALTAVOLA NO. 2.B 120×60 cm]]></name>

<parameters><parameter id="748" name="Seria" xml:lang="pol" iaiext:priority="0"/><parameter id="18" name="Kolor" xml:lang="pol" iaiext:priority="1"><value id="157" name="Szary" xml:lang="pol" iaiext:priority="0"/><value id="584" name="Naturalny" xml:lang="pol" iaiext:priority="1"/></parameter><parameter id="760" name="Materiał blatu" xml:lang="pol" iaiext:priority="2"><value id="778" name="mikrobeton" xml:lang="pol" iaiext:priority="0"/></parameter><parameter id="762" name="Materiał nóg" xml:lang="pol" iaiext:priority="3"><value id="779" name="drewno" xml:lang="pol" iaiext:priority="0"/></parameter><parameter id="764" name="Długość blatu" xml:lang="pol" iaiext:priority="4"><value id="780" name="120 cm" xml:lang="pol" iaiext:priority="0"/></parameter><parameter id="766" name="Szerokość blatu" xml:lang="pol" iaiext:priority="5"><value id="781" name="60 cm" xml:lang="pol" iaiext:priority="0"/></parameter><parameter id="768" name="Grubość blatu" xml:lang="pol" iaiext:priority="6"><value id="782" name="4 cm" xml:lang="pol" iaiext:priority="0"/></parameter><parameter id="770" name="Wysokość nogi" xml:lang="pol" iaiext:priority="7"><value id="783" name="40 cm" xml:lang="pol" iaiext:priority="0"/></parameter><parameter id="772" name="Grubość nogi" xml:lang="pol" iaiext:priority="8"><value id="773" name="12 x 12 cm" xml:lang="pol" iaiext:priority="0"/></parameter><parameter id="774" name="Max rozstaw nóg (szerokość)" xml:lang="pol" iaiext:priority="9"><value id="784" name="72 cm" xml:lang="pol" iaiext:priority="0"/></parameter><parameter id="776" name="Max rozstaw nóg (długość)" xml:lang="pol" iaiext:priority="10"><value id="785" name="132 cm" xml:lang="pol" iaiext:priority="0"/></parameter><iaiext:parameters_translation id="748" name="Seria" xml:lang="pol"/><iaiext:parameters_translation id="748" name="Series" xml:lang="eng"/><iaiext:parameters_translation id="748" name="Serie" xml:lang="ger"/><iaiext:parameters_translation id="18" name="Kolor" xml:lang="pol"/><iaiext:parameters_translation id="18" name="Colour" xml:lang="eng"/><iaiext:parameters_translation id="18" name="Farbe" xml:lang="ger"/><iaiext:parameters_translation id="157" name="Szary" xml:lang="pol"/><iaiext:parameters_translation id="157" name="Grey" xml:lang="eng"/><iaiext:parameters_translation id="157" name="Grau" xml:lang="ger"/><iaiext:parameters_translation id="584" name="Naturalny" xml:lang="pol"/><iaiext:parameters_translation id="584" name="Natural" xml:lang="eng"/><iaiext:parameters_translation id="584" name="Natural" xml:lang="ger"/><iaiext:parameters_translation id="760" name="Materiał blatu" xml:lang="pol"/><iaiext:parameters_translation id="760" name="Countertop material" xml:lang="eng"/><iaiext:parameters_translation id="760" name="Platte Material" xml:lang="ger"/><iaiext:parameters_translation id="778" name="mikrobeton" xml:lang="pol"/><iaiext:parameters_translation id="778" name="mikrobeton" xml:lang="eng"/><iaiext:parameters_translation id="778" name="mikrobeton" xml:lang="ger"/><iaiext:parameters_translation id="762" name="Materiał nóg" xml:lang="pol"/><iaiext:parameters_translation id="762" name="Legs material " xml:lang="eng"/><iaiext:parameters_translation id="762" name="Materialschenkel" xml:lang="ger"/><iaiext:parameters_translation id="779" name="drewno" xml:lang="pol"/><iaiext:parameters_translation id="779" name="wood" xml:lang="eng"/><iaiext:parameters_translation id="779" name="holz" xml:lang="ger"/><iaiext:parameters_translation id="764" name="Długość blatu" xml:lang="pol"/><iaiext:parameters_translation id="764" name="Length of top" xml:lang="eng"/><iaiext:parameters_translation id="764" name="Länge von oben" xml:lang="ger"/><iaiext:parameters_translation id="780" name="120 cm" xml:lang="pol"/><iaiext:parameters_translation id="780" name="120 cm" xml:lang="eng"/><iaiext:parameters_translation id="780" name="120 cm" xml:lang="ger"/><iaiext:parameters_translation id="766" name="Szerokość blatu" xml:lang="pol"/><iaiext:parameters_translation id="766" name="Width of the table top" xml:lang="eng"/><iaiext:parameters_translation id="766" name="Breite der Tischplatte" xml:lang="ger"/><iaiext:parameters_translation id="781" name="60 cm" xml:lang="pol"/><iaiext:parameters_translation id="781" name="60 cm" xml:lang="eng"/><iaiext:parameters_translation id="781" name="60 cm" xml:lang="ger"/><iaiext:parameters_translation id="768" name="Grubość blatu" xml:lang="pol"/><iaiext:parameters_translation id="768" name="Thickness of the countertop" xml:lang="eng"/><iaiext:parameters_translation id="768" name="Dicke der Arbeitsplatte" xml:lang="ger"/><iaiext:parameters_translation id="782" name="4 cm" xml:lang="pol"/><iaiext:parameters_translation id="782" name="4 cm" xml:lang="eng"/><iaiext:parameters_translation id="782" name="4 cm" xml:lang="ger"/><iaiext:parameters_translation id="770" name="Wysokość nogi" xml:lang="pol"/><iaiext:parameters_translation id="770" name="Height of the legs" xml:lang="eng"/><iaiext:parameters_translation id="770" name="Höhe der Beine" xml:lang="ger"/><iaiext:parameters_translation id="783" name="40 cm" xml:lang="pol"/><iaiext:parameters_translation id="783" name="40 cm" xml:lang="eng"/><iaiext:parameters_translation id="783" name="40 cm" xml:lang="ger"/><iaiext:parameters_translation id="772" name="Grubość nogi" xml:lang="pol"/><iaiext:parameters_translation id="772" name="Thickness of the leg" xml:lang="eng"/><iaiext:parameters_translation id="772" name="Dicke des Beins" xml:lang="ger"/><iaiext:parameters_translation id="773" name="12 x 12 cm" xml:lang="pol"/><iaiext:parameters_translation id="773" name="12 x 12 cm" xml:lang="eng"/><iaiext:parameters_translation id="773" name="12 x 12 cm" xml:lang="ger"/><iaiext:parameters_translation id="774" name="Max rozstaw nóg (szerokość)" xml:lang="pol"/><iaiext:parameters_translation id="774" name="Distance between the legs (width)" xml:lang="eng"/><iaiext:parameters_translation id="774" name="Maximale Abstand zwischen den Beinen (Breite)" xml:lang="ger"/><iaiext:parameters_translation id="784" name="72 cm" xml:lang="pol"/><iaiext:parameters_translation id="784" name="72 cm" xml:lang="eng"/><iaiext:parameters_translation id="784" name="72 cm" xml:lang="ger"/><iaiext:parameters_translation id="776" name="Max rozstaw nóg (długość)" xml:lang="pol"/><iaiext:parameters_translation id="776" name="Distance between the legs (length)" xml:lang="eng"/><iaiext:parameters_translation id="776" name="Maximale Abstand zwischen den Beinen (Länge)" xml:lang="ger"/><iaiext:parameters_translation id="785" name="132 cm" xml:lang="pol"/><iaiext:parameters_translation id="785" name="132 cm" xml:lang="eng"/><iaiext:parameters_translation id="785" name="132 cm" xml:lang="ger"/></parameters>

<sizes>
<size id="0"  code_producer="5902249031973" code="13-0" weight="0" >
<stock id="1" quantity="2"/>
</size>
</sizes>

i teraz chodzi o to aby efektem działania sterownika było pobieranie danych tylko i wyłącznie dla towarów z konkretnego ID magazynu. jedna formatka będzie dla 1, jedna dla 2, a inna dla 0.

na chwile obecną mam przygotowany sterownik pod każdy język, ale niestety idą wszystkie produkty co jest mi obecnie nie na rękę, a zależy mi na generowaniu oferty dla konkretnego magazynu.

z góry bardzo dziękuję za pomoc w rozwiązaniu obu problemów.

pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1