Hi everyone,
I've been combing the message boards for the last few days trying to find something that will work for me, but to no success. I had 0 experience with XSLT before this which definitely doesn't help out in the search but I am determined to learn.
What I've got is some XML:
<?xml version="1.0" encoding="utf-8" ?>
<newapplicantreturn>
<applicant id="1234567">
<questions>
<question order="1" id="123" answertype="YesNo">
This is question 1.
</question>
<question order="2" id="124" answertype="YesNo">
This is question 2.
</question>
<question order="3" id="125" answertype="Text">
This is question 3.
</question>
</questions>
</applicant>
</newapplicantreturn>
What I need to do is take the text in the question element and either add it as an attribute of the question or wrap it in a separate <text></text> child element. I'd prefer the second method but at this point, whatever works.
I found the following XSLT which works great if the text is already in an element:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="question">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:apply-templates select="*" mode="element-to-attribute"/>
</xsl:copy>
</xsl:template>
<xsl:template match="question/*" mode="element-to-attribute">
<xsl:attribute name="text">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
I don't know if the above is easily tweakable to get what I want. I've been researching and trying so many different things I've pretty much hit the wall.
Any help will be greatly appreciated.
Thanks.