Gabarit conditionel
Association et insertion de contenu JSON tout en suivant un gabarit conditionel.
La liste suivante est un exemple d'association conditionnel en devinant le type de données.
Code source de l'example précédent
Json:
{
"subject": [
{
"foo": "bar",
"bar": "hello world"
},
{
"foo": "https://example.com",
"bar": "hello world"
}
]
}
Html:
<ul data-wb-json='{
"url": "demo/conditional-1.json#/subject",
"mapping": [
{
"template": "[data-text]",
"test": "fn:guessType",
"expect": "xsd:string",
"assess": "/foo",
"mapping": [
{ "selector": "[data-foo]", "value": "/foo" },
{ "selector": "[data-bar]", "value": "/bar" }
]
},
{
"template": "[data-link]",
"test": "fn:guessType",
"expect": "xsd:anyURI",
"assess": "/foo",
"mapping": [
{ "selector": "a", "value": "/foo", "attr": "href" },
{ "selector": "a", "value": "/bar" }
]
}
]
}'>
<template data-text>
<li><span data-foo></span> - <span data-bar></span></li>
</template>
<template data-link>
<li><a href></a></li>
</template>
</ul>
À travers des exemples suivants, il montre également l'utilisation de ces configurations, sans s'y limiter. Une liste complète de toutes les configurations est disponible dans la documentation du plugin data-json.
- Configuration
streamline
- (Booléen: vrai ou faux) Cet indicateur indique que le plugin data-json appliquera le gabarit via l'objet d'association directement, sans essayer d'itérer la source de données.
- Object d'association
assess
- (Pointeur JSON) C'est la valeur qui sera prise pour effectuer l'évaluation conditionnelle. Alternativement, elle prendra la valeur de la propriété
value
. Une autre différence est queassess
ne sera pas itéré par rapport àvalue
qui lui sera itéré pour la correspondance interne.
Note : Le gabarit conditionnel considérera les données associées à la propriété @value
comme la valeur de son parent correspondant. Quelques exemples utilise cette fonctionnalité d'association automatique, ce qui facilite l'interopérabilité avec des objets typés tels que définis dans la norme JSON-LD.
Code source des fichiers JSON utilisé par les examples dans cette page-ci
Fichier: conditional-1.json
{
"subject": [
{
"foo": "bar",
"bar": "hello world"
},
{
"foo": "https://example.com",
"bar": "hello world"
}
],
"list": [
{
"@type": "xsd:string",
"@value": "string"
},
{
"@type": "xsd:double",
"@value": 123.45
},
{
"@type": "xsd:boolean",
"@value": true
},
{
"@type": "xsd:anyURI",
"@value": "https://example.com"
},
{
"@type": "xsd:string",
"@value": "second string"
}
],
"text": {
"alpha": "alpha",
"beta": "beta",
"gamma": "gamma",
"delta": "delta"
}
}
Fichier: conditional-2.json
{
"alpha": [ "alpha" ],
"beta": "beta",
"gamma": { "@value": "gamma" },
"delta": { "@type": "rdfs:Resource", "@value": "delta" },
"epsilon": "epsilon",
"zeta": true,
"eta": "http://example.com",
"theta": 123.45,
"iota": {
"@type": [ "rdfs:Resource", "xsd:string" ],
"@value": "iota"
},
"kappa": {
"lamdba": "mu"
},
"nu": {
"@type": "@json",
"@value": {
"xi": "xi",
"omicron": "omicron",
"pi": "pi"
}
},
"rho": {
"@type": "@json",
"@value": {
"sigma": "sigma",
"tau": "tau",
"upsilon": "upsilon"
}
},
"sigma": {
"alpha": "sigma",
"gamma": "sigma"
},
"undefined": "tau",
"text": {
"zeta": "zeta",
"eta": "eta",
"theta": "theta",
"kappa": "kappa"
}
}
Fonctions de test qui extraient une valeur testable.
Ces tests nécessitent un pointeur de données fourni soit avec la propriété value
, qui itérera également, soit avec assess
qui n'itérera pas.
fn:isArray
- Retourne un booléen indiquant si la valeur testée est un tableau ou non.
fn:isLiteral
- Retourne un booléen indiquant si la valeur testée est littérale ou non. Une valeur littérale est considérée comme définie et non comme un objet.
fn:getType
- Renvoie le type de la valeur définie via la propriété
@type
ou son type JavaScript correspondant à l'aide de la fonction typeof. fn:guessType
-
Le parseur de gabarits essaiera de deviner le type de données de la valeur testée.
Cette fonction de test renverra :
rdfs:Container
lorsque la valeur est un tableau.rdfs:Literal
pour toute valeur qui est littérale. Une valeur littérale est considérée comme définie et non comme un objet.rdfs:Resource
lorsque la valeur est un objet JSON sans type de définie.xsd:anyURI
lorsque la valeur est une chaîne de caractères qui commence par une lettre et un chiffre immédiatement suivis de deux points ":" sans espaces, commehttps://example.com.
xsd:string
lorsque la valeur est une chaîne de caractères qui ne semble pas être une URI.xsd:boolean
lorsque la valeur est un booléen avec la valeurtrue
oufalse
.xsd:double
lorsque la valeur est un nombre JSON.- La valeur définie via la sous-propriété
@type
. undefined
lorsque la valeur est indéfinie.
fn:getValue
- Renvoie la valeur en tant que valeur testable.
Exemple de chaque fonction de test :
Démo de chaque fonction de test.
fn:isArray
:fn:isLiteral
:fn:getType
:fn:guessType
:fn:getValue
:
Résultat attendu de la démonstration précédente.
fn:isArray
: alphafn:isLiteral
: betafn:isLiteral
: gammafn:getType
: deltafn:getType
: epsilonfn:getType
: zetafn:guessType
: alphafn:guessType
: betafn:guessType
: gammafn:guessType
: etafn:guessType
: betafn:guessType
: gammafn:guessType
: zetafn:guessType
: thetafn:guessType
: deltafn:guessType
: sigmafn:guessType
: taufn:getValue
: kappa
Code source
<div class="row">
<div class="col-md-6">
<p>Démo de chaque fonction de test.</p>
<ul data-wb-json='{
"url": "demo/conditional-2.json",
"streamline": true,
"mapping": [
{
"template": "[data-isarray]",
"test": "fn:isArray",
"assess": "/alpha",
"mapping": [
{ "selector": "span", "value": "/alpha/0" }
]
},
{
"template": "[data-isliteral]",
"test": "fn:isLiteral",
"assess": "/beta",
"mapping": [
{ "selector": "span", "value": "/beta" }
]
},
{
"template": "[data-isliteral]",
"test": "fn:isLiteral",
"assess": "/gamma",
"mapping": [
{ "selector": "span", "value": "/gamma" }
]
},
{
"template": "[data-gettype]",
"test": "fn:getType",
"assess": "/delta",
"expect": "rdfs:Resource",
"mapping": [
{ "selector": "span", "value": "/delta" }
]
},
{
"template": "[data-gettype]",
"test": "fn:getType",
"assess": "/epsilon",
"expect": "string",
"mapping": [
{ "selector": "span", "value": "/epsilon" }
]
},
{
"template": "[data-gettype]",
"test": "fn:getType",
"assess": "/zeta",
"expect": "boolean",
"mapping": [
{ "selector": "span", "value": "/text/zeta" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/alpha",
"expect": "rdfs:Container",
"mapping": [
{ "selector": "span", "value": "/alpha/0" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/beta",
"expect": "rdfs:Literal",
"mapping": [
{ "selector": "span", "value": "/beta" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/gamma",
"expect": "rdfs:Literal",
"mapping": [
{ "selector": "span", "value": "/gamma" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/beta",
"expect": "xsd:anyURI",
"mapping": [
{ "selector": "span", "value": "/beta" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/gamma",
"expect": "xsd:anyURI",
"mapping": [
{ "selector": "span", "value": "/gamma" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/eta",
"expect": "xsd:anyURI",
"mapping": [
{ "selector": "span", "value": "/text/eta" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/beta",
"expect": "xsd:string",
"mapping": [
{ "selector": "span", "value": "/beta" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/gamma",
"expect": "xsd:string",
"mapping": [
{ "selector": "span", "value": "/gamma" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/eta",
"expect": "xsd:string",
"mapping": [
{ "selector": "span", "value": "/text/eta" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/zeta",
"expect": "xsd:boolean",
"mapping": [
{ "selector": "span", "value": "/text/zeta" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/theta",
"expect": "xsd:double",
"mapping": [
{ "selector": "span", "value": "/text/theta" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/delta",
"expect": "rdfs:Resource",
"mapping": [
{ "selector": "span", "value": "/delta/@value" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/sigma",
"expect": "rdfs:Resource",
"mapping": [
{ "selector": "span", "value": "/sigma/alpha" }
]
},
{
"template": "[data-guesstype]",
"test": "fn:guessType",
"assess": "/tau",
"expect": "undefined",
"mapping": [
{ "selector": "span", "value": "/undefined" }
]
},
{
"template": "[data-getvalue]",
"test": "fn:getValue",
"assess": "/kappa",
"operand": "eq",
"expect": { "lamdba": "mu" },
"mapping": [
{ "selector": "span", "value": "/text/kappa" }
]
}
]
}'>
<template data-isarray>
<li><code>fn:isArray</code>: <span></span></li>
</template>
<template data-isliteral>
<li><code>fn:isLiteral</code>: <span></span></li>
</template>
<template data-gettype>
<li><code>fn:getType</code>: <span></span></li>
</template>
<template data-guesstype>
<li><code>fn:guessType</code>: <span></span></li>
</template>
<template data-getvalue>
<li><code>fn:getValue</code>: <span></span></li>
</template>
</ul>
</div>
<div class="col-md-6">
<p>Résultat attendu de la démonstration précédente.</p>
<ul>
<li><code>fn:isArray</code>: alpha</li>
<li><code>fn:isLiteral</code>: beta</li>
<li><code>fn:isLiteral</code>: gamma</li>
<li><code>fn:getType</code>: delta</li>
<li><code>fn:getType</code>: epsilon</li>
<li><code>fn:getType</code>: zeta</li>
<li><code>fn:guessType</code>: alpha</li>
<li><code>fn:guessType</code>: beta</li>
<li><code>fn:guessType</code>: gamma</li>
<li><code>fn:guessType</code>: eta</li>
<li><code>fn:guessType</code>: beta</li>
<li><code>fn:guessType</code>: gamma</li>
<li><code>fn:guessType</code>: zeta</li>
<li><code>fn:guessType</code>: theta</li>
<li><code>fn:guessType</code>: delta</li>
<li><code>fn:guessType</code>: sigma</li>
<li><code>fn:guessType</code>: tau</li>
<li><code>fn:getValue</code>: kappa</li>
</ul>
</div>
</div>
Fonction d'opérande
Fonctions d'opérande qui vérifient la valeur testable.
softEq
(défaut)- Vérifie si la valeur est équivalente à l'attente, optionellement un tableau. Lorsqu'aucune attente n'est spécifiée, il retournera
true
si la valeur testable existe. eq
- Vérifie si la valeur est égale à l'attente, y compris lorsque la valeur est un objet.
neq
- Vérifie si la valeur n'est pas égale à l'attente, y compris lorsque la valeur est un objet.
in
- Check if the value (or array of value) is in the expectation (or array of expectation)
- Vérifie si la valeur (ou un tableau de valeurs) se trouve dans l'attente (ou un tableau d'attentes).
nin
- Vérifie si la valeur (ou un tableau de valeurs) se ne trouve pas dans l'attente (ou un tableau d'attentes).
Exemple d'opérande
Démonstration de chaque opérande.
eq
:neq
:in
:nin
:
Résultat attendu de la démonstration précédente.
eq
: deltaeq
: kappaeq
: iotaneq
: deltain
: iotanin
: iota
Code source
<div class="row">
<div class="col-md-6">
<p>Démonstration de chaque opérande.</p>
<ul data-wb-json='{
"url": "demo/conditional-2.json",
"streamline": true,
"mapping": [
{
"template": "[data-eq]",
"test": "fn:guessType",
"assess": "/delta",
"operand": "eq",
"expect": "rdfs:Resource",
"mapping": [
{ "selector": "span", "value": "/delta/@value" }
]
},
{
"template": "[data-eq]",
"test": "fn:getValue",
"assess": "/kappa",
"operand": "eq",
"expect": { "lamdba": "mu" },
"mapping": [
{ "selector": "span", "value": "/text/kappa" }
]
},
{
"template": "[data-eq]",
"test": "fn:guessType",
"assess": "/iota",
"operand": "eq",
"expect": [ "rdfs:Resource", "xsd:string" ],
"mapping": [
{ "selector": "span", "value": "/iota/@value" }
]
},
{
"template": "[data-neq]",
"test": "fn:guessType",
"assess": "/delta",
"operand": "neq",
"expect": "rdfs:Literal",
"mapping": [
{ "selector": "span", "value": "/delta/@value" }
]
},
{
"template": "[data-in]",
"test": "fn:guessType",
"assess": "/iota",
"operand": "in",
"expect": "xsd:string",
"mapping": [
{ "selector": "span", "value": "/iota/@value" }
]
},
{
"template": "[data-nin]",
"test": "fn:guessType",
"assess": "/iota",
"operand": "nin",
"expect": "rdfs:Literal",
"mapping": [
{ "selector": "span", "value": "/iota/@value" }
]
}
]
}'>
<template data-eq>
<li><code>eq</code>: <span></span></li>
</template>
<template data-neq>
<li><code>neq</code>: <span></span></li>
</template>
<template data-in>
<li><code>in</code>: <span></span></li>
</template>
<template data-nin>
<li><code>nin</code>: <span></span></li>
</template>
</ul>
</div>
<div class="col-md-6">
<p>Résultat attendu de la démonstration précédente.</p>
<ul>
<li><code>eq</code>: delta</li>
<li><code>eq</code>: kappa</li>
<li><code>eq</code>: iota</li>
<li><code>neq</code>: delta</li>
<li><code>in</code>: iota</li>
<li><code>nin</code>: iota</li>
</ul>
</div>
</div>
La fonction d'association : Alternative
Cette fonction d'association spéciale permet de configurer une liste d'associations où seul le premier enfant satisfaisant à la condition de test sera exécuté.
Démonstration de la fonction alternative.
- Premier gabarit:
- Second gabarit:
Résultat attendu de la démonstration précédente.
- Premier gabarit: gamma
Code source
<div class="row">
<div class="col-md-6">
<p>Démonstration de la fonction alternative.</p>
<ul data-wb-json='{
"url": "demo/conditional-2.json",
"streamline": true,
"mapping": [
{
"@type": "rdf:Alt",
"mapping": [
{
"template": "[data-first]",
"test": "fn:guessType",
"assess": "/gamma",
"expect": "rdfs:Literal",
"mapping": [
{ "selector": "span", "value": "/gamma" }
]
},
{
"template": "[data-second]",
"test": "fn:guessType",
"assess": "/eta",
"expect": "xsd:anyURI",
"mapping": [
{ "selector": "span", "value": "/eta" }
]
}
]
}
]
}'>
<template data-first>
<li>Premier gabarit: <span></span></li>
</template>
<template data-second>
<li>Second gabarit: <span></span></li>
</template>
</ul>
</div>
<div class="col-md-6">
<p>Résultat attendu de la démonstration précédente.</p>
<ul>
<li>Premier gabarit: gamma</li>
</ul>
</div>
</div>
Affichage conditionel du contenu d'un gabarit
Affiche le contenu du gabarit (<template>
) sans l'utiliser pour correspondre des données JSON.
Démo:
Fonctionne
Résultat attendu de la démonstration précédente.
Fonctionne
Source code
<div class="row">
<div class="col-md-6">
<p>Démo:</p>
<div data-wb-json='{
"url": "demo/conditional-2.json",
"streamline": true,
"mapping": [
{
"template": "[data-show-conditional-only]",
"test": "fn:isLiteral",
"assess": "/beta",
"mapping": null
}
]
}'>
<template data-show-conditional-only>
<p>Fonctionne</p>
</template>
</div>
</div>
<div class="col-md-6">
<p>Résultat attendu de la démonstration précédente.</p>
<p>Fonctionne</p>
</div>
</div>
Emplacement du gabarit fusionné
Par défaut, lorsque la configuration n'est pas rationalisée, le contenu créé avec le gabarit initial est ajouté à l'élément.
For inner template, through mapping configuration, and when the plugin configuration streamline flag is on, the content created with the template are added just before that template. However, you can use the flag "append" to append from the parent element of the template.
Pour le gabarit interne, via la configuration d'association et lorsque l'indicateur de rationalisation de la configuration du plugin est activé, le contenu créé avec le gabarit sera ajouté juste avant ce gabarit. Cependant, vous pouvez utiliser l'indicateur "append" pour ajouter à la fin à partir de l'élément parent du gabarit.
Voici un exemple de rendu d'un modèle spécifié via une association par défaut.
Démonstration (par défault, insertions sur place):
xsd:string
:xsd:double
:xsd:boolean
:xsd:anyURI
:
Résultat attendu de la démonstration précédente.
xsd:string
: stringxsd:string
: second stringxsd:double
: 123.45xsd:boolean
: truexsd:anyURI
: https://example.com
Démonstration (Avec l'indicateur append
):
xsd:string
:xsd:double
:xsd:boolean
:xsd:anyURI
:
Résultat attendu de la démonstration précédente.
xsd:string
: stringxsd:double
: 123.45xsd:boolean
: truexsd:anyURI
: https://example.comxsd:string
: second string
Code source
<div class="row">
<div class="col-md-6">
<p>Démonstration (par défault, insertions sur place):</p>
<ul data-wb-json='{
"url": "demo/conditional-1.json#/list",
"mapping": [
{
"template": "[data-string]",
"test": "fn:guessType",
"assess": "/",
"expect": "xsd:string",
"mapping": [
{ "selector": "span", "value": "/" }
]
},
{
"template": "[data-double]",
"test": "fn:guessType",
"assess": "/",
"expect": "xsd:double",
"mapping": [
{ "selector": "span", "value": "/" }
]
},
{
"template": "[data-boolean]",
"test": "fn:guessType",
"assess": "/",
"expect": "xsd:boolean",
"mapping": [
{ "selector": "span", "value": "/" }
]
},
{
"template": "[data-anyuri]",
"test": "fn:guessType",
"assess": "/",
"expect": "xsd:anyURI",
"mapping": [
{ "selector": "span", "value": "/" }
]
}
]
}'>
<template data-string>
<li><code>xsd:string</code>: <span></span></li>
</template>
<template data-double>
<li><code>xsd:double</code>: <span></span></li>
</template>
<template data-boolean>
<li><code>xsd:boolean</code>: <span></span></li>
</template>
<template data-anyuri>
<li><code>xsd:anyURI</code>: <span></span></li>
</template>
</ul>
</div>
<div class="col-md-6">
<p>Résultat attendu de la démonstration précédente.</p>
<ul>
<li><code>xsd:string</code>: string</li>
<li><code>xsd:string</code>: second string</li>
<li><code>xsd:double</code>: 123.45</li>
<li><code>xsd:boolean</code>: true</li>
<li><code>xsd:anyURI</code>: https://example.com</li>
</ul>
</div>
</div>
<div class="row">
<div class="col-md-6">
<p>Démonstration (Avec l'indicateur <code>append</code>):</p>
<ul data-wb-json='{
"url": "demo/conditional-1.json#/list",
"mapping": [
{
"template": "[data-string]",
"test": "fn:guessType",
"assess": "/",
"expect": "xsd:string",
"append": true,
"mapping": [
{ "selector": "span", "value": "/" }
]
},
{
"template": "[data-double]",
"test": "fn:guessType",
"assess": "/",
"expect": "xsd:double",
"append": true,
"mapping": [
{ "selector": "span", "value": "/" }
]
},
{
"template": "[data-boolean]",
"test": "fn:guessType",
"assess": "/",
"expect": "xsd:boolean",
"append": true,
"mapping": [
{ "selector": "span", "value": "/" }
]
},
{
"template": "[data-anyuri]",
"test": "fn:guessType",
"assess": "/",
"expect": "xsd:anyURI",
"append": true,
"mapping": [
{ "selector": "span", "value": "/" }
]
}
]
}'>
<template data-string>
<li><code>xsd:string</code>: <span></span></li>
</template>
<template data-double>
<li><code>xsd:double</code>: <span></span></li>
</template>
<template data-boolean>
<li><code>xsd:boolean</code>: <span></span></li>
</template>
<template data-anyuri>
<li><code>xsd:anyURI</code>: <span></span></li>
</template>
</ul>
</div>
<div class="col-md-6">
<p>Résultat attendu de la démonstration précédente.</p>
<ul>
<li><code>xsd:string</code>: string</li>
<li><code>xsd:double</code>: 123.45</li>
<li><code>xsd:boolean</code>: true</li>
<li><code>xsd:anyURI</code>: https://example.com</li>
<li><code>xsd:string</code>: second string</li>
</ul>
</div>
</div>
Association de la valeur du type @json
(ou rdf:JSON
)
Allow to display in a textual form @json
typed value or rdf:JSON
value which are the exact same. The test function for data type will always return the RDF form of the type @json
which is rdf:JSON
Permet d'afficher sous une forme textuel les valeur du type @json
ou de rdf:JSON
lequel ont exactement la même signification. La fonction d'essaie du type de donné va toujours retourné ce type sous se forme RDF. Par example, le type @json
sera retourné comme valeur rdf:JSON
Démonstration d'association d'une donnée @json
et de rdf:JSON
Résultat attendu de la démonstration précédente.
{"xi":"xi","omicron":"omicron","pi":"pi"}
{"sigma":"sigma","tau":"tau","upsilon":"upsilon"}
Code source
<div class="row">
<div class="col-md-6">
<p>Démonstration d'association d'une donnée <code>@json</code> et de <code>rdf:JSON</code></p>
<div data-wb-json='{
"url": "demo/conditional-2.json",
"streamline": true,
"mapping": [
{
"template": "[data-json-content]",
"test": "fn:guessType",
"assess": "/nu",
"expect": "rdf:JSON",
"mapping": [
{ "selector": "data", "value": "/nu" },
{ "selector": "data", "value": "/nu", "attr": "value" }
]
},
{
"template": "[data-json-content]",
"test": "fn:guessType",
"assess": "/rho",
"expect": "rdf:JSON",
"mapping": [
{ "selector": "data", "value": "/rho" },
{ "selector": "data", "value": "/rho", "attr": "value" }
]
}
]
}'>
<template data-json-content>
<pre><code><data value></data></code></pre>
</template>
</div>
</div>
<div class="col-md-6">
<p>Résultat attendu de la démonstration précédente.</p>
<pre><code><data value='{"xi":"xi","omicron":"omicron","pi":"pi"}'>{"xi":"xi","omicron":"omicron","pi":"pi"}</data></code></pre>
<pre><code><data value='{"sigma":"sigma","tau":"tau","upsilon":"upsilon"}'>{"sigma":"sigma","tau":"tau","upsilon":"upsilon"}</data></code></pre>
</div>
</div>
Extension de la fonction de test et de l'opérande
Le plugin data-json a été adapté pour permettre l'extension de sa fonction de test et de sa liste d'opérandes, sans possibilité de les remplacer.
Si la fonction de test personnalisée et l'opérande définis uniquement sur cette page sont positifs, le texte suivant sera mis en évidence avec le contenu défini sur "beta":
Code source
<script>
window[ "wb-data-json" ] = {
functionForTest: {
"myCustomTest": function( value, rawValue ) {
if ( value === "beta" ) {
return "foo";
}
return value;
}
},
functionForOperand: {
"myCustomOperand": function( value, expect ) {
if ( value === "foo" && expect === "bar" ) {
return true;
} else {
return false;
}
}
}
};
</script>
<p data-wb-json='{
"url": "demo/conditional-2.json",
"streamline": true,
"mapping": [
{
"template": "[data-custom]",
"test": "myCustomTest",
"value": "/beta",
"operand": "myCustomOperand",
"expect": "bar",
"mapping": [
{ "selector": "strong", "value": "/" }
]
}
]
}'>Si la fonction de test personnalisée et l'opérande définis uniquement sur cette page sont positifs, le texte suivant sera mis en évidence avec le contenu défini sur "beta":
<template data-custom>
<strong></strong>
</template>
</p>
- Date de modification :