Mergado 2: Element-Path

Mergado 2: Element-Path

Představujeme vám Element-Path, jazyk kompletně vytvořený ze strany Mergada. Je navrhnutý tak, aby uživatelé mohli v pravidlech a výběrech naplno využít všechny nové možnosti Mergada 2. Přečtěte si, jak tato novinka funguje.

:woman_teacher: Co je Element-Path

  • jazyk pro specifikaci hodnot produktových elementů v Mergadu – cesta k elementu nebo atributu
  • používá se v pravidlech a výběrech produktů
  • označuje výraz napsaný pomocí Element-Path jazyku
  • výsledkem jednoho element-path může být více hodnot a můžeme ho využít v pravidlech pro jednoduchou úpravu vícenásobných elementů.

:question: Rozdíly mezi Mergadem a Mergadem 2

Jak pracuje Mergado (aktuální verze):

  • produkty jsou zapsány v tabulce
  • jeden řádek = jeden produkt
  • jeden sloupec = jeden element
  • element-path (název elementu) = výběr jednoho sloupce v tabulce
  • MQL je pak výběr konkrétních řádků v tabulce

Jak funguje Mergado 2:

  • produkty jsou seznamy stromů
  • jeden produkt = jeden strom ze seznamu
  • jedna hodnota elementu = jeden uzel ve stromu
  • jeden element = množina uzlů ve stromu se stejným názvem elementu
  • element-path = výběr libovolného počtu uzlů se stejným názvem elementu
  • MQL = výběr konkrétních stromů ze seznamu

Rozdíly Mergado vs. Mergado 2.

:point_right: Příklad na konkrétním produktu:

Produkt:

1. <ITEM id="1">
2.   <NAME>Ukázkový produkt</NAME>
3.   <IMAGE>https://www.imgurl.cz/1/</IMAGE>
4.   <IMAGE>https://www.imgurl.cz/2/</IMAGE>
5.   <IMAGE>https://www.imgurl.cz/3/</IMAGE>
6.   <PRICE>987 Kč</PRICE>
7.   <DESCRIPTION lang="cz">
8.      Vhodný pro názornou ukázku správného použití Element-Path
9.   </DESCRIPTION>
10.  <DESCRIPTION lang="sk">
11.     Vhodný pre názornú ukážku správneho použitia Element-Path
12.  </DESCRIPTION>
13.  <PARAM>
14.      <NAME>Barva</NAME>
15.      <VAL>černá</VAL>
16.  </PARAM>
17.  <PARAM>
18.      <NAME>Materiál</NAME>
19.      <VAL>100% bavlna</VAL>
20.  </PARAM>
21 </ITEM>

:woman_technologist: Různé element-path:

  • NAME: vrátí hodnotu z řádku 2.
  • ID: vrátí hodnotu z řádku 1.
  • IMAGE: vrátí hodnoty z řádků 3., 4., 5.
  • IMAGE { @@POSITION = 2 }: vrátí hodnotu z řádku 4.
  • IMAGE { @@POSITION = 4 }: nevrátí nic
  • DESCRIPTION { @lang = “cz” }: vrátí hodnotu z řádku 8.
  • DESCRIPTION | @lang: vrátí hodnoty z řádků 7., 10.
  • PARAM { NAME = “Barva” } | VAL: vrátí hodnotu z řádku 15.
  • PARAM { @@POSITION = 2 or NAME = “Barva” } | VAL: vrátí hodnoty z řádků 15., 19.
  • PARAM { VAL = “100% bavlna” } | VAL: vrátí hodnotu z řádku 19.
  • PARAM | NAME: vrátí hodnoty z řádků 14., 18.
  • PARAM | NAME { @@POSITION = 1 }: vrátí hodnoty z řádků 14., 18.
  • PARAM | NAME { @@POSITION = 2 }: nevrátí nic

:clipboard: Specifika Element-Path

  • víceslovné názvy elementů musíte obalit hranatými závorkami:

[Objem motoru] = “2 l”→ ! obalte vždy pouze název jednoho elementu

  • velké množství elementů ve výběru je nežádoucí

ID = 1 nebo ID = 2 nebo ID = 3 → ID ~ “^(1|2|3)$”

  • číselné konstanty se převádí na číslo → problém s 0 na začátku

ID = “0021”

  • neexistence elementu se testuje pomocí rovnosti na prázdný string
  • u vícenásobných elementů stačí, aby jediná hodnota splňovala podmínku

:hammer_and_wrench: Schématický popis pomocí bezkontextové gramatiky

V případě, že vás zajímá i technický popis, můžete se podívat níže.

Popis

Schématický popis pomocí bezkontextové gramatiky

Terminály:

Data:

  • *FIELD *: název elementu uveden v hranatých závorkách, v případě že název elementu neobsahuje mezery, je možné hranaté závorky vynechat
  • příklady: [Název produktu], NAME, …
  • *ATTRIBUTE *: název atributu začínající na znak @
  • příklady: @id, @lang, …
  • *SPECIAL *: speciální vyhrazený atribut začínají na @@
  • Aktuálně povolené hodnoty: - @@MERGADO_ID - id produktu v Mergadu
  • @@POSITION - pozice hodnoty konkrétního elementu v produktu v kontextu stejného rodiče
  • *STRING *: hodnota ve feedu rovná textu obaleného v uvozovkách
  • příklady: "$120", "<h3>Sleva 20%</h3>", …
  • *DECIMAL *: hodnota ve feedu rovná číslu
  • příklady: 42, 123.456, …

Operátory a jiné funkční znaky:

  • (, ): závorky pro ohraničení seznamu hodnot a nebo určení precedence u vyhodnocení výpočtů a logických operátor
  • =, !=: operátory pro vyhodnocení (ne)rovnosti dvou hodnot (maximálně jeden z operátorů může být konstanta)
  • ~, !~: operátory pro rozhodnutí, zdali hodnota (ne)vyhovuje zadanému regulárnímu výrazu (maximálně jeden z operátorů musí být konstanta)
  • in, not in: operátory pro test (ne)přítomnosti hodnoty v seznamu hodnot
  • <, >, <=, >=: matematické operátory pro porovnání velikostí dvou čísel
  • +, -, *, /: matematické operátory pro výpočet
  • and, or, not: logické operátory
  • {, }: závorky ohraničující podmínku pro potomky konkrétního elementu
  • |: operátor pro zanoření, nebo-li pro specifikaci konkrétního přímého potomka k zadanému elementu (atribut elementu je jeho přímí potomek)
  • ;: oddělovač hodnot v seznamu hodnot

Neterminály s přepisovacími pravidly:

  • *elementPath *:
  • *FIELD * { *query * } | *element *
  • *FIELD * { *query * }
  • *FIELD * | *element *
  • *ATTRIBUTE *
  • *FIELD *
  • *element *:
  • *elementPath *
  • *SPECIAL *
  • *query *:
  • *query * and *subquery *
  • *query * or *subquery *
  • *subquery *
  • *subquery *:
  • *operation *
  • not *operation *
  • ( *query * )
  • not ( *query * )
  • *operation *:
  • *math * < *math *
  • *math * > *math *
  • *math * <= *math *
  • *math * >= *math *
  • *math * = *math *
  • *math * != *math *
  • *operand * ~ *operand *
  • *operand * !~ *operand *
  • *operand * in ( *list * )
  • *operand * not in ( *list * )
  • *list *:
  • *operand * ; *list *
  • *operand *
  • *math *:
  • *math * + *submath *
  • *math * - *submath *
  • *submath *
  • *submath *:
  • *submath * * *operand *
  • *submath * / *operand *
  • *operand *
  • *operand *:
  • element
  • *DECIMAL *
  • - *DECIMAL *
  • *STRING *
  • ( *math * )
  • - ( *math * )

Máte otázky ohledně nastavení nebo přesunu Mergada 2? Kontaktujte naši podporu a sledujte kategorii na fóru, kde najdete aktuální informace.

2 Likes