Skip to main content
New Member
August 11, 2025
Question

EDS x-walk project not support multiple sheets?

  • August 11, 2025
  • 1 reply
  • 397 views

Hello,

I'm currently working on a project using X-walk and the Universal Editor and have a question regarding how sheets are handled.

Does the Experience Delivery Service (EDS) support only one sheet per type (e.g., taxonomy, metadata) for an entire project? When I try to create mappings for a second sheet of a specific type (for example, a second metadata sheet named metadata2 or a second taxonomy sheet), publishing it to the EDS fails to generate a json file, resulting in a 404 error.

I’ve also read in the documentation that using a shared- prefix might be a solution, but this approach does not seem to work with X-walk either.

 

If X-walk projects are indeed limited to a single sheet per type, is there another recommended approach to implement page-specific sheets within the EDS?

 

Thanks in advance for any insights you can provide!

1 reply

Mohit_KBansal
Adobe Employee
Adobe Employee
August 18, 2025

Does EDS support multiple sheets? Yes, but one page should have one sheet mapping. So if you need multiple sheets, create multiple pages.

See [1] for details.

 

[1] https://www.aem.live/docs/authoring-taxonomy

New Member
August 19, 2025

It appears that adding a sheet functions as expected, with the exception of the metadata sheet. I anticipated that its properties would be located within the page's "head" section, specifically as "meta property={my-metadata}", but I have been unable to locate any of them. Is this the intended behavior?

migac_jurica
Level 1
May 6, 2026

Revisiting the implementation of page markup in the AEM at the /libs/core/franklin/components/page/v1/page/page.html.


Below I’m sharing the HTML for handling the metadata part, which gives you the idea that you can handle OOTB mentioned https://www.aem.live/docs/bulk-metadata, and the custom ones.

<title data-sly-test="${page.title}">${page.title}</title>
<sly data-sly-list="${page.metadata}">
<meta data-sly-test="${item.name!='json-ld'}" property="${item.property}" name="${item.name}" content="${item.content}"><!--/*
*/--><script data-sly-test="${item.name=='json-ld'}" type="application/ld+json">${item.content @ context='unsafe'}</script></sly>

If we’re revisiting the backend code from the OSGi to fetch the metadata and how the custom metadata is handled, so as longs as it’s written on the page level, it could get picked up and handled as the <meta> tag in the HTML.

for (String name : customMetadataNames) {
if (!StringUtils.isEmpty(name) && !name.contains("/")) {
name = name.split("@", 2)[0];
if (!PageMetadataServiceImpl.isBuiltInMetadata(name)) {
String propName = PropertyHelper.mangleNamespace(name);
String[] values = (String[])getProperties().get(propName, String[].class);
if (values != null && values.length != 0) {
String content = Arrays.<String>stream(values).map(value -> Jsoup.clean(value, Safelist.none())).map(Entities::unescape).map(value -> value.replace("\r\n", " ").replace("\n", " ").replace("\r", " ").replaceAll(" +", " ")).collect(Collectors.joining(", "));
if (StringUtils.isNotEmpty(content))
metadata.put(name.toLowerCase(Locale.ROOT), content);
}
}
}
}

Hope it helps, if you need any additional information on how it’s handled, or how you can handle it, feel free to ask with concrete question.