Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to read plain text content with XSLT 1.0

Tags:

xml

xslt

xslt-1.0

The source file contains

Hello World, this is a nice world

The output desired applying the XSLT to the input file:

<Hello_World message="this is a nice world"/>

I know I can use unparsed-text in XSLT 2.0 easily, but I need do it with XSLT 1.0.

I browsed a while, and I can't find something useful.

Is it posible? I need to use Xalan XSLT processor.

I think this question is challenging.

like image 710
jechaviz Avatar asked Nov 21 '13 00:11

jechaviz


People also ask

How do I read a text file in XSLT?

If you can use XSLT 2.0 you could use unparsed-text() ... Text File (Do not use the text file as direct input to the XSLT.) ! ITEM_NAME Item value !

Is XSLT deprecated?

If you have been experiencing issues using the XSLT format for Positive Pay, that is because Microsoft deprecated the XSLT format as of March 14, 2022.

Which browser supports XSLT?

Web browsers: Safari, Chrome, Firefox, Opera and Internet Explorer all support XSLT 1.0 (only). Browsers can perform on-the-fly transformations of XML files and display the transformation output in the browser window.

Is XSLT a markup language?

Extensible Stylesheet Language Transformations (XSLT), better known as XSL transformations, is a language for transforming Extensible Markup Languague (XML) documents into other structured documents.


1 Answers

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.)

like image 174
kjhughes Avatar answered Oct 14 '22 03:10

kjhughes