Skip to main content
Participating Frequently
October 23, 2020
Question

Script or XSLT to remove line break between XML elements

  • October 23, 2020
  • 3 replies
  • 3562 views

I have some XML in this format:


<ROOT><DOCUMENT>

<CHAPTER>Chapter One</CHAPTER>
<CONTENT>This is what happened in Chapter 1.</CONTENT>
<CHAPTER>Chapter Two</CHAPTER>
<CONTENT>This is what happened in Chapter 2.</CONTENT>
</DOCUMENT></ROOT>

 

I have a pre-tagged template where the <CHAPTER> tag maps to a paragraph style with Keep Options, start paragraph=Next page (i.e., every new chapter should start on a new page). The <CONTENT> tag maps to a basic paragraph style, and <ROOT> and <DOCUMENT> are not mapped.

 

Notice there is a line break in the XML after <DOCUMENT>. After importing, the result is that page 1 appears blank (because of the line break) and Chapter One starts on page 2. If I go into the story editor and remove the line break so it looks like <DOCUMENT><CHAPTER>, it fixes the display so Chapter One starts on page 1.

 

Is there a way for me to automate the removal of the line break, either with XSLT or a script in InDesign? Unfortunately we can't change the original XML output, and I'm trying to avoid any manual fixes.

This topic has been closed for replies.

3 replies

BarlaeDC
Community Expert
Community Expert
October 28, 2020

HI,

 

Many thanks for sharing the link, I have been able to replicate and will see if I can work around the issue, but I think it might be worth logging a bug against InDesign as that is not how I would expect and XML import to behave with a return that is outside of the content that it should be placing.

 

log the issue here - https://www.adobe.com/products/wishform.html

 

Regards

 

Malcolm

Participating Frequently
December 10, 2020

We've solved this issue:

 

1. In Indesign, created a new tag, TOC_CHAPTER1.

 

2. Created a new paragraph style, TOC_CHAPTER1. This new style is exactly like TOC_CHAPTER except start paragraph=Anywhere.

 

3. Mapped the tag to the paragraph style.

 

3. Created an .xsl file to change just the first instance of TOC_CHAPTER to TOC_CHAPTER1:

 

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="no"/>

<xsl:template match="DOCUMENT/TOC_CHAPTER[1]">
<TOC_CHAPTER1><xsl:apply-templates/></TOC_CHAPTER1>
</xsl:template>

</xsl:stylesheet>

 

4. On importing the XML, selected Apply XSLT and chose the .xsl file.

Mario Fritsche
Legend
October 26, 2020

Edit: Error

---Mario
BarlaeDC
Community Expert
Community Expert
October 25, 2020

Hi,

 

Are you able to share the template?

 

Regards

 

Malcolm

Participating Frequently
October 26, 2020