Witam.
Mam taki kod w xml
<size>
<stock id="0" quantity="0.000"/>
<stock id="1" quantity="34" location_id="40" location_text_id="Magazyn główny\13L"/>
<stock id="2" quantity="2"/>
</size>
Mam problem z pobraniem danych quantity w przypadku jeżeli w tagu stock id="1".
Czyli chciałbym wyciągnąć wartość 34 z quantity.
Próbowałem w ten sposób /sizes/size/stock[@id="1"][quantity] ale nic z tego.
co należy wpisać po [@id="1"] aby pobrało wartość quantity.
A jest możliwość żeby to zadziałało w "xQuery tester" bo po dopisaniu tego polecenia nie wyświetla wyników a mój moduł przyjmuje to tylko w takiej wersji
W przypadku wywołania sizes/size/stock[@id="1"] otrzymuje:
<?xml version="1.0" encoding="UTF-8"?>
<stock xmlns:iaiext="http://www.iai-shop.com/developers/iof/extensions.phtml"
id="1"
quantity="34"
location_id="40"
location_text_id="Magazyn główny\13L"/>
A tu chodzi żebym otrzymał tylko wartość quantity dla rekordów z id="1"
Działa
Dzięki za pomoc choć samo dzięki za podzielenie się wiedzą na tym forum to za mało i podziwiam takich ludzi którzy służą bezinteresownie innym.
A tak w ogóle to stosowałem ten zapis tyle że nie wpadłem na to że w xQuery muszę dodać na wstępie string
Witam. Ponownie a może tak kontynuując o krok dalej mam pytanie czy jest opcja łączenia wartości.
Chciałbym z kodu:
<parameter>
<value priority="0" name="Panel"/>
<value priority="1" name="FM"/>
<value priority="2" name="USB"/>
</parameter>
Pobrać naraz wszystkie dane paramteru "name". Czyli żeby wynikiem było np coś takiego: "Panel. FM. USB."
Wpisująć w xQuery tester polecenie
string (//parameter/value[@priority="1"]/@name)
otrzymuje wynik: "Panel" Jednak jeżeli już próbuje połączyć wyniki w jeden ciąg poniższym poleceniem:
string (//parameter/value[@priority="1"]/@name) | (//parameter/value[@priority="2"]/@name)
nic nie wychodzi.
Jest jakiś sposób aby połączyć wszystkie wartości "name" najlepiej oddzielając je w wyniku spacją lub kropką.
Będę wdzięczny za pomoc bo już przesiedziałem drugi dzień nad tym rozwiązaniem i nic
A dlaczego na siłę znów wciskasz tam nawiasy kwadratowe?
Do łączenia używa się concat, podałem Ci linki z przykładami.
Dzięki.
Szczerze mówiąc to przeglądałem te linki ale nie znalazłem nic o concat i wogóle ciężko cokolwiek znaleź w dokumantacjach na temat tej funkcji a przecież nie jest czymś wyjątkowym.
Zapis jaki przyniósł zamierzony efekt to:
string (//parameter/(concat (value[@priority="0"]/@name, value[@priority="1"]/@name, value[@priority="2"]/@name)))
Próbowałem jeszcze to uprościć aby nie powtarzać @priority dla każdego indeksu (gdyby się okazało że jest ich ok. 50) tylko żeby polecenie z automatu połączyło wszystkie wartości @name ze wszystkich tagów "value" ale bez efektów więc zadowole się takim rozwiązaniem.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)