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ů
- cesta k elementu (nebo taky element-path s malými počátečními písmeny) označuje výraz napsaný pomocí Element-Path jazyku
- výsledkem jedné cesty k elementu (element-path) může být více hodnot a můžeme ji 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
- cesta k elementu (element-path) = 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
- cesta k 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é cesty k hodnotám elementů (element-path):
NAME
vrátí hodnotu z řádku2.
ID
vrátí hodnotu z řádku1.
IMAGE
vrátí hodnoty z řádků3.
,4.
,5.
IMAGE { @@POSITION = 2 }
vrátí hodnotu z řádku4.
IMAGE { @@POSITION = 4 }
nevrátí nicDESCRIPTION { @lang = "cz" }
vrátí hodnotu z řádku8.
DESCRIPTION | @lang
vrátí hodnoty z řádků7.
,10.
PARAM { NAME = "Barva" } | VAL
vrátí hodnotu z řádku15.
PARAM { @@POSITION = 2 OR NAME = "Barva" } | VAL
vrátí hodnoty z řádků15.
,19.
PARAM { VAL = "100% bavlna" } | VAL
vrátí hodnotu z řádku19.
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:
- 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
, …
- Příklady:
- ATTRIBUTE: název atributu začínající na znak
@
.- Příklady:
@id
,@lang
, …
- Příklady:
- 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.
- Aktuálně povolené hodnoty: -
- STRING: hodnota ve feedu rovná textu obaleného v uvozovkách.
- Příklady:
"$120"
,"<h3>Sleva 20%</h3>"
, …
- Příklady:
- DECIMAL: hodnota ve feedu rovná číslu.
- Příklady:
42
,123.456
, …
- Příklady:
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í, zda-li 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
- FIELD
- element:
- elementPath
- SPECIAL
- query:
- query
and
subquery - query
or
subquery - subquery
- query
- 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)
- math
- list:
- operand
;
list - operand
- operand
- math:
- math
+
submath - math
-
submath - submath
- math
- submath:
- submath
*
operand - submath
/
operand - operand
- submath
- 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.