Non-XML tagged value text to XML

M

mikea_59

I would like to use XSLT to translate some tagged value text to XML
elements like this:

Input Doc:

<data>x=1.234 y=ABC z="Hello World"</data>

Output Doc:

<x>1.234</value>
<y>ABC</y>
<z>&quot;Hello World&quot;</z>

Is XSLT up to the task? What would it look like? Most of the XSLT
string processing code I've seen looks very verbose - can't be too
efficient.
 
M

Martin Honnen

mikea_59 said:
I would like to use XSLT to translate some tagged value text to XML
elements like this:

Input Doc:

<data>x=1.234 y=ABC z="Hello World"</data>

Output Doc:

<x>1.234</value>
<y>ABC</y>
<z>&quot;Hello World&quot;</z>

Is XSLT up to the task? What would it look like? Most of the XSLT
string processing code I've seen looks very verbose - can't be too
efficient.

Using XSLT 2.0 you can do that with regular expression matching as follows:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">

<xsl:eek:utput method="xml" encoding="UTF-8" indent="yes" />

<xsl:template match="/">
<results>
<xsl:apply-templates />
</results>
</xsl:template>

<xsl:template match="data">
<xsl:analyze-string select="." regex="((\w+)=(&quot;.*&quot;|\S+))">
<xsl:matching-substring>
<xsl:element name="{regex-group(2)}">
<xsl:value-of select="regex-group(3)" />
</xsl:element>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:template>

</xsl:stylesheet>

Output with Saxon 8.2 is

<?xml version="1.0" encoding="UTF-8"?>
<results>
<x>1.234</x>
<y>ABC</y>
<z>"Hello World"</z>
</results>

With XSLT 1.0/XPath 2.0 you need to write a template that processes the
string x=1.234 y=ABC z="Hello World" recursively using functions
substring-before/substring-after.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,999
Messages
2,570,243
Members
46,836
Latest member
login dogas

Latest Threads

Top