How to read plain text content with XSLT 1.0

It is not possible for the input document to be plain text because the input to an XSLT 1.0 transformation must be well-formed XML.

Here are some alternative ways to access plain text in an XSLT transformation:

  • Use unparsed-text in XSLT 2.0.
  • Pass the plain text in via top-level parameters (xsl:param).
  • Preprocess the text file to turn it into a well-formed XML document.
  • Generate the XSLT file dynamically, possibly via a meta XSLT transformation, and include the plain text directly in the XSLT source. Then just use a dummy XML input file.
  • Reference the text file as an external entity in a wrapper XML
    document, and then process the wrapper XML document using XSLT.

Here’s an example of the external entity technique:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wrapper [
<!ENTITY textFile SYSTEM "file.txt">
]>
<wrapper>&textFile;</wrapper>

(Note that this last option could be challenging given XSLT 1.0’s limited string processing abilities, but for some data, it may be viable.)

Leave a Comment