---
schema_version: "1"
id: 1512b71036aeda77443d9e8d309b4d90e2ecdfa0aeaad8a7f23f64ce9a78b6ea
title: ISML Expressions
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/commerce-cloud/b2c-commerce/guides/isml/b2c-isml-expressions.md
canonical_url: https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/b2c-isml-expressions.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: ff94d41f8c0f7c46497d8589bd2ff2314afa33aad65bf3b453ff50afc8df3f26
products:
  - Composable Storefront
  - Salesforce APIs
---
# ISML Expressions

ISML expressions let you embed programming logic, using a business API, into a template to generate dynamic content. The syntax and semantics of these expressions is based on JavaScript and similar to those defined for JSP expressions. ISML provides SGML-like extension tags. Along with HTML code, they describe how dynamic data is embedded and formatted.

Script expressions can be embedded directly in the template or used in tag attributes. Template programming via scripting isn’t limited to expressions. Extended programming logic can be expressed via scriptlets (see \<[isscript](https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/b2c-isscript.md)> for details).

Expressions have the following syntax:

```
 ${...}
```

where `${` is the opening identifier, and `}` is the closing identifier. The content enclosed within is interpreted as an expression.

Given that pages are dynamically generated, you need a way to call and present dynamic data in templates. Any data to be presented within a template must be available via the Pipeline Dictionary. ISML expressions provide access to the pipeline data.

Syntax:

```
${pdict.<KeyAttributeName>}$
```

## Using the \</Body> Tag

The `</body>` tag is a protected keyword in ISML. You _must not_ use the `</body>` tag in ISML comments and JavaScript. If you do, you must obfuscate it in JavaScript, as in this example:

```
var endbdy = data.indexOf("</bo" + "dy>");
```

## Examples

This example shows an expression embedded as an attribute value in an ISML tag:

```
<isprint value="${pdict.Product.name}">
```

This example accesses data (via a get method) that is stored in the Pipeline Dictionary:

```
"${pdict.Product.getLongDescription() != null}"
```

This example includes the special function `URLUtils.continueURL()`:

```
<form action="${URLUtils.continueURL()}" method="post" id="${pdict.CurrentForms.cart.htmlName}">
```

### Additional Examples

| Example                   | Description                 |
| ------------------------- | --------------------------- |
| ${pdict.Product}          | Refers to a product.        |
| ${pdict.Content.template} | Refers to a content object. |
| ${pdict.ProductPrices}    | Refers to product prices.   |
| ${pdict.Order.orderNo}    | Refers to the order number. |
