Creating Custom Export Filters for StarOffice with XSLT

Creating Custom Export Filters for StarOffice with XSLT

ecently, I found myself in need of a way to share selected information from a spreadsheet with several distinct groups of people. This was a personal project, and I didn’t want to get too fancy. I thought about creating a web application, but decided that would be overkill. All I really wanted was a way to generate two or three static HTML pages every few days as new information came in.

I had created the spreadsheet on my home computer using StarOffice, Sun’s office suite software. The nice thing about StarOffice (besides the price) is that it’s based on OpenOffice, free, open-source software that supports the OpenDocument Format. In other words, the file format is not proprietary; it’s standard. Even better, it’s all based on XML, which means you can use XSLT to convert OpenOffice documents to other formats.

Here’s an overview of the conversion process for StarOffice:

  1. Create the XSL stylesheet. (This article assumes you’re familiar with XSL.)
  2. In StarOffice, add an entry for your stylesheet in the XML Filters list.
  3. Run the transformation by selecting your filter from the “File – Export” dialog.
Figure 1. StarOffice XML Files: Open a StarOffice file using a utility such as 7-Zip to view the XML files inside.

Creating the XSL Stylesheet

Using the editor of your choice, create your XSL stylesheet. To do that, you’ll need to familiarize yourself with the document structure. You can find official documentation at I found it easier just to look at the XSL stylesheets that came with StarOffice and poke around inside the document itself.

In my case, the document was a spreadsheet with an .ODS extension. An ODS file is actually a compressed file containing several XML files (see Figure 1), the most important of which is content.xml. If you open content.xml in a text editor or XML editor, the first thing you see is a long list of namespaces. Copy those into your stylesheet, as shown in Listing 1.

Next, take a look at the elements that make up your document. In a spreadsheet, there’s a table:table element for each sheet, a table:table-row element for each row, and a table:table-cell element for each cell.

How you select the cells you want will vary. There’s no easy way to select a defined range of cells. To get around that, I created a “row group” in my spreadsheet that included all the rows I was interested in (see Figure 2). A row group is represented as a table:table-row-group element, which is easy to select in your stylesheet.

When you’ve selected the correct rows, you can do all the usual things with your data that make XSL so useful. For example, my stylesheet does the following:

  • Sorts by date rather than title
  • Excludes some columns from the display
  • Uses a different background color for some rows, based on a column value
  • Creates an HTML link for each row, if a URL is available
  • Displays row numbers

Figure 2. Row Group: One way of selecting rows in a stylesheet is to reference a row group defined in the spreadsheet.
Figure 3. Output HTML from XSLT: In this case, the output format was HTML, but XSLT can be used for other formats, too.

The resulting HTML file provides all the information the original spreadsheet does, but in two columns instead of four. Figure 3 shows the output HTML.

Adding an XML Filter Entry

When you’ve created your stylesheet, you need to add it to StarOffice’s list of XML filters. Select “Tools – XML Filter Settings” from the menu and click “New” to display the “New Filter” dialog. Fill in the information about your filter. The field for the filename of your stylesheet is on the Transformation tab. When you’re done, click OK. Figure 4 shows the output HTML.

Running the Transformation

Now you’re ready to export your StarOffice file to another format using XSLT. Select “File – Export” from the menu. You should see your new file type (for example, “Poems By Date”) in the dropdown list.

But What About Testing?

Exporting again and again is not the most efficient way to test your code. It’s better to test your stylesheet in an XML editor, if you can. I loaded my stylesheet, along with a copy of content.xml, into XMLSpy. In XMLSpy, you can easily assign a stylesheet to an XML file and press F10 to test the transformation (see Figure 5).

Figure 4. Output HTML from XML Filter: The name you enter in the “Name of File Type” field is the name that will be displayed in the “File – Export” dialog.
Figure 5. Testing the Stylesheet: A good XML editor should provide some way of testing your XSL stylesheet.

The example stylesheet I’ve included with this article is a bit simpler than the ones I actually used for my project, but it’s a starting point.

Share the Post:
Heading photo, Metadata.

What is Metadata?

What is metadata? Well, It’s an odd concept to wrap your head around. Metadata is essentially the secondary layer of data that tracks details about the “regular” data. The regular

XDR solutions

The Benefits of Using XDR Solutions

Cybercriminals constantly adapt their strategies, developing newer, more powerful, and intelligent ways to attack your network. Since security professionals must innovate as well, more conventional endpoint detection solutions have evolved

AI is revolutionizing fraud detection

How AI is Revolutionizing Fraud Detection

Artificial intelligence – commonly known as AI – means a form of technology with multiple uses. As a result, it has become extremely valuable to a number of businesses across

AI innovation

Companies Leading AI Innovation in 2023

Artificial intelligence (AI) has been transforming industries and revolutionizing business operations. AI’s potential to enhance efficiency and productivity has become crucial to many businesses. As we move into 2023, several

data fivetran pricing

Fivetran Pricing Explained

One of the biggest trends of the 21st century is the massive surge in analytics. Analytics is the process of utilizing data to drive future decision-making. With so much of

kubernetes logging

Kubernetes Logging: What You Need to Know

Kubernetes from Google is one of the most popular open-source and free container management solutions made to make managing and deploying applications easier. It has a solid architecture that makes