By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
434,572 Members | 946 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 434,572 IT Pros & Developers. It's quick & easy.

Non-XML tagged value text to XML

P: n/a
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.

Jul 20 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a


mikea_59 wrote:
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:output 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.
--

Martin Honnen
http://JavaScript.FAQTs.com/
Jul 20 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.