Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - ZAJDAN

Stran: 1 2 3 [4] 5 6 ... 139
46
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 23. 07. 2021, 12:42:51 »
Rádo se stalo. V čem byl problém?
u jednoho elementu mi chyběl namespace
jdbc:Row

47
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 21. 07. 2021, 09:54:45 »
@BoneFlute
tak verzi co jsi mi poslal už jsem zprovoznil
@Filip Jirsák
šablony určitě také zkusím, snad se k tomu dnes dostanu

všem díky!

48
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 20. 07. 2021, 10:37:25 »
Pánové moc díky za Vaše rady a nápady, které jste mi poskytli.
On ten Integrační framework od SAPu je taková parní lokomotiva :) a ne všechno tam funguje standardně.
Každopádně si nejsem jist, zda mohu 'apply-templates' použít uvnitř volané template.
Kód: [Vybrat]
<xsl:template match="/">
            <vpf:Msg>
                <xsl:copy-of select="/vpf:Msg/@*"></xsl:copy-of>
                <xsl:copy-of select="/vpf:Msg/vpf:Header"></xsl:copy-of>
                <vpf:Body>
                    <xsl:copy-of select="/vpf:Msg/vpf:Body/*"></xsl:copy-of>
                    <vpf:Payload Role="X" id="{$atom}">
                        <xsl:call-template name="transform"></xsl:call-template>
                    </vpf:Payload>
                </vpf:Body>
            </vpf:Msg>
</xsl:template>

<xsl:template name="transform">
....
....
.....
<xsl:template match="/">
   <Pack>
   <xsl:apply-templates select="/vpf:Msg/vpf:Body/vpf:Payload[@id='CallSQL']/jdbc:ResultSets/jdbc:ResultSet[3]/jdbc:Row"></xsl:apply-templates>   
   </Pack>
</xsl:template>

</xsl:template>


49
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 18. 07. 2021, 23:31:44 »
....
Zítra to s čistou hlavou znovu zkusím.

....
Docela se stydím přiznat, že tento standardní přístup jsem při používání XSLT nevyužíval a všude používám for-each.
Zkouším tu Vaši variantu, ale neiteruje mi to. Vytvoří to jen jednu paletu a jeden box.

50
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 18. 07. 2021, 13:31:19 »
...
1) Celá ta věc používá XSLT 1.0 (SAP IntegrationFramework 2.0)
2) Píšete, že se nemohu odkazovat na dynamicky vznikající obsah a následně píšete, že se mohu odkazovat na Pack, ale právě ten Pack v ten moment dynamicky vzniká.

51
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 18. 07. 2021, 12:05:01 »
To jsem byl já. Tady je malá sbírka použití:
https://www.oreilly.com/library/view/xslt-2nd-edition/9780596527211/ch04s03.html
Atribut select tam skutečně není, ale jsou tam atributy from a value, které plní tuto funkci.
Každopádně pokud jsem to dobře pochopil, tak uvnitř for-each nemůžu odkazovat na XML elementy, které v něm vznikají, ale musím se odkazovat na vstupní XML strukturu kterou má cyklus v selektu. V mém případě bych tedy v xsl:number ukazoval na ResultSet/Row, etc a to mi asi nepomůže.

52
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 18. 07. 2021, 11:23:49 »
K očíslování vstupních elementů slouží <xsl:number />. Takže tam, kde potřebujete získat pořadové číslo, použijte <xsl:number count="Pack" select="XXX"/> kde za XXX dosadíte selektor pro uzel, jehož pořadí potřebujete získat – v případě palety to tedy bude aktuální uzel, v případě boxu to bude uzel získaný přes Parent.
Včera tady někdo xsl:number zmiňoval, díval jsem se, ale atribut 'select' se tam nezmiňuje:
https://www.w3schools.com/XML/ref_xsl_el_number.asp

53
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 18. 07. 2021, 10:36:03 »
Palety iterují jen na sobě, boxy jen v jednom kole.
Počítá mi to takto:
Kód: [Vybrat]
<Pack>
<Type>Pallet</Type>
<ID>11</ID>
<Sequence>1</Sequence>
</Pack>
<Pack>
<Type>Box</Type>
<Child>aaa</Child>
<Parent>1</Parent>
<Sequence>2</Sequence>
</Pack>
<Pack>
<Type>Box</Type>
<Child>bbb</Child>
<Parent>1</Parent>
<Sequence>2</Sequence>
</Pack>
<Pack>
<Type>Pallet</Type>
<ID>10</ID>
<Sequence>2</Sequence>
</Pack>
<Pack>
<Type>Box</Type>
<Child>ccc</Child>
<Parent>2</Parent>
<Sequence>3</Sequence>
</Pack>
<Pack>
<Type>Box</Type>
<Child>ddd</Child>
<Parent>2</Parent>
<Sequence>3</Sequence>
</Pack>
<Pack>
<Type>Pallet</Type>
<ID>6</ID>
<Sequence>3</Sequence>
</Pack>
<Pack>
<Type>Box</Type>
<Child>zzz</Child>
<Parent>3</Parent>
<Sequence>4</Sequence>
</Pack>

54
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 18. 07. 2021, 01:06:48 »
....
Díky zkusil jsem, ale Sekvence je počítána špatně.
Cílem je, aby sekvence šla plynule za sebou, bez ohledu na to, zda je to paleta nebo box.
A u boxů pak dosazovat do <Parent> sekvenci jejich palety.

55
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 17. 07. 2021, 22:54:15 »
Výsledek by měl být Paleta, boxy na ní, Paleta, boxy na ní.
Kód: [Vybrat]
<Workbook>
    <Pack>
<Type>Pallet<Type>
<ID>11</ID>
<Sequence>1</Sequence>
    </Pack>
    <Pack>
<Type>Box<Type>
<ID>aaa</ID>
<Sequence>2</Sequence>
<Parent>1</Parent>
    </Pack>
<Type>Box<Type>
<ID>bbb</ID>
<Sequence>3</Sequence>
<Parent>1</Parent>
    </Pack>
<Pack>
<Type>Pallet<Type>
<ID>10</ID>
<Sequence>4</Sequence>
    </Pack>
    <Pack>
<Type>Box<Type>
<ID>ccc</ID>
<Sequence>5</Sequence>
<Parent>4</Parent>
    </Pack>
<Type>Box<Type>
<ID>ddd</ID>
<Sequence>6</Sequence>
<Parent>4</Parent>
    </Pack>
<Type>Pallet<Type>
<ID>6</ID>
<Sequence>7</Sequence>
    </Pack>
    <Pack>
<Type>Box<Type>
<ID>zzz</ID>
<Sequence>8</Sequence>
<Parent>7</Parent>
    </Pack>
</Workbook>
   

56
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 17. 07. 2021, 21:24:15 »
1) Omlouvám se za nepřesný popis případu, níže to vyjasním lépe.
2) To co chci, dokážu, ale tak, že zpracuji cyklem a XML výstup v dalším payloadu ztransformuju.
3) To stejné bych ale chtěl docílit v rámci jednoho payloadu, pravděpodobně pomocí template jak tady zmiňujete.

V ResultSet[1] mám seznam palet. V ResultSet[2] mám seznam krabic a na jaké paletě leží <Parent>.
Celý problém tkví v tom, že v hlavním xsl:foreach cyklu je ještě vnitřní cyklus a v obouch používám position().
Ve vnitřním cyklu jen přičítám +1 aby sekvenční číslo jednotlivých <Package> iterovalo správně.
Takže vznikne první element Package typu paleta a následujou Package typu box co jsou na ní naloženy. Pak další Package typu paleta a za ním Package typu box co jsou na ní.
Havní problém je v tom, že se počítá pomocí position() v obou cyklech a tím nikdy nevznikne postupné číslování.
Další, co pak budu řešit, je přiřadit všem Package typu Box sekvenční číslo jejich palety/rodiče.

Kód: [Vybrat]
<ResultsSet>
   <ResultSet>
     <Row><Parent>11</Parent></Row>
     <Row><Parent>10</Parent></Row>
     <Row><Parent>6</Parent></Row>
   </ResultSet>
   <ResultSet>
     <Row>
         <Child>aaa</Child>
         <Parent>11</Parent>
     </Row>
     <Row>
         <Child>bbb</Child>
         <Parent>11</Parent>
     </Row>
     <Row>
         <Child>ccc</Child>
         <Parent>10</Parent>
     </Row>
     <Row>
         <Child>ddd</Child>
         <Parent>10</Parent>
     </Row>
     <Row>
         <Child>zzz</Child>
         <Parent>6</Parent>
     </Row>
   </ResultSet>
</ResultsSet>

Kód: [Vybrat]
<xsl:for-each select="/ResultsSet/ResultSet[1]/Row">
    <xsl:variable name="Parent" select="/ResultsSet/ResultSet[1]/Row/Parent"></xsl:variable>
    <Pack>
<Type>Pallet<Type>
<ID><xsl:value-of select="Parent"/></ID>
<Sequence><xsl:value-of select="position()"></Sequence>
    </Pack>

    <xsl:for-each select="/ResultsSet/ResultSet[2]/Row[Parent='$Parent']">
    <Pack>
<Type>Box<Type>
<ID><xsl:value-of select="Child"></ID>
<Sequence><xsl:value-of select="position() +1"></Sequence>
<Parent>sekvenční číslo rodičovské palety</Parent>
    </Pack>
    </xsl:for-each>

57
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 17. 07. 2021, 14:10:23 »
Měl jsem na mysli vstupní XML. Mám si ho snad vycucat z prstu?

Vstupní struktura je zde k ničemu, protože na ni se jen odkazuju cyklusem. Nebudu sem dávat kompletní vstup(je obrovskej), ale logika je takováto.
Vstupní payload:
Kód: [Vybrat]
<ResultsSet>
   <ResultSet>
     <Row><Parent>11</Parent></Row>
     <Row><Parent>10</Parent></Row>
     <Row><Parent>6</Parent></Row>
   </ResultSet>
   <ResultSet>
     <Row>
         <Child>aaa</Child>
         <Parent>11</Parent>
     </Row>
     <Row>
         <Child>bbb</Child>
         <Parent>11</Parent>
     </Row>
     <Row>
         <Child>ccc</Child>
         <Parent>10</Parent>
     </Row>
     <Row>
         <Child>ddd</Child>
         <Parent>10</Parent>
     </Row>
     <Row>
         <Child>zzz</Child>
         <Parent>6</Parent>
     </Row>
   </ResultSet>
</ResultsSet>

V následujícím payloadu:
Kód: [Vybrat]
<xsl:for-each select="/ResultsSet/ResultSet[1]/Row">
      <xsl:variable name="Round" select="position()"></xsl:variable>
      <Pack>
      <Parent>Pallet</Parent>
      <ID><xsl:value-of select="Parent"/></Parent>
      <xsl:choose>
            <xsl:when test="$Round='1'">
             <Number><xsl:value-of select="position()"></xsl:value-of></Number>
        </xsl:when>
        <xsl:otherwise>
             <Number><xsl:value-of select="./ancestor::Pack/Number +1"></xsl:value-of></Number>
        </xsl:otherwise>
      </xsl:choose>
</xsl:for-each>
S osama potřebuji pracovat až na nově vznikající xml struktuře uvnitř cyklu. Hodnota v elementu <Number> se bude měnit ještě na základě jiných podmínek, ale do toho nemá smysl zabředávat. Otazka zní, zda se pomocí xpath axes dá ukazovat na strukturu, která je vytvořena v předchozím kole cyklu.

58
Vývoj / Re:XSLT - xpath axes uvnitř cyklu
« kdy: 17. 07. 2021, 13:40:55 »
Zkus zapomenout na existenci xsl:for-each a udělej to pořádně. Uvidíš, že to bude o dost jednodušší.

Dodej sem ukázku XML a požadovaný výsledek. Testovací data se mi vymejšlet nechce.
XML struktura vzniká právě v tom cyklu foreach.

59
Vývoj / XSLT - xpath axes uvnitř cyklu
« kdy: 17. 07. 2021, 13:29:55 »
Ahoj...
mám foreach cyklus a v něm vytvářím XML strukturu. První kolo cyklu vytvoří část struktury a v dalším kole bych potřeboval pomocí xpath axes se na tu strukturu dostat. Lze to vůbec?
Potřeboval bych získat hodnotu elementu ze struktury, kterou vytvořilo předchozí kolo cyklu.

Kód: [Vybrat]
<xsl:for-each select="/bla/bla/bla/neco">
      <xsl:variable name="Round" select="position()"></xsl:variable>
      <Pack>
      <Parent>Pallet</Parent>
      <xsl:choose>
            <xsl:when test="$Round='1'">
             <Number><xsl:value-of select="position()"></xsl:value-of></Number>
        </xsl:when>
        <xsl:otherwise>
             <Number><xsl:value-of select="./ancestor::Pack/Number +1"></xsl:value-of></Number>
        </xsl:otherwise>
      </xsl:choose>
</xsl:for-each>

60
Hardware / Re:PC sestava pro grafickou práci (Adobe)
« kdy: 24. 06. 2021, 10:27:12 »
kup si 16core Ryzen, dej tam 64-128GB RAM, a nějakou nVidia GPU pro CUDA.

Neposlouchej ty lidi s macbookama - ten výkon se nedá vůbec srovnat.
souhlasím...sám pracuji ve Photoshopu i Illustratoru a na AMD to kmitá dobře.
Kupovat Mac je totální zbytečnost.

Stran: 1 2 3 [4] 5 6 ... 139