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.
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ů.
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.
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>
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
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
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.