Subject: Re: [xsl] How to take a QName value and make it an attribute? From: Michael Kay <mike@xxxxxxxxxxxx> Date: Wed, 01 Aug 2012 16:42:15 +0100 |
<xsl:template match="fault"> <xsl:copy> <xsl:variable name="q" as="xs:QName" select="." /> <xsl:attribute name="{local-name-from-QName(q)}" namespace="namespace-uri-from-QName(q)">blah</xsl:attribute> <xsl:value-of select="." /> </xsl:copy> </xsl:template>
<xsl:template match="fault"> <xsl:copy> <xsl:variable name="q" as="xs:QName" select="resolve-QName(., .)" /> <xsl:attribute name="{local-name-from-QName(q)}" namespace="namespace-uri-from-QName(q)">blah</xsl:attribute> <xsl:value-of select="." /> </xsl:copy> </xsl:template>
Michael Kay Saxonica
Hi Folks,
I want to transform the <fault> element in this document:
<Test xmlns:soap="http://www.soap.org"> <fault>soap:client</fault> </Test>
Note that the value of the <fault> element is
soap:client
which is a QName.
I want to transform the <fault> element to this:
<fault soap:client="blah">soap:client</fault>
That is, make the QName value an attribute and assign it the string "blah."
After transformation the XML document is to be this:
<Test xmlns:soap="http://www.soap.org"> <fault soap:client="blah">soap:client</fault> </Test>
I tried this code:
<xsl:template match="fault"> <xsl:copy> <xsl:variable name="QName" select="." /> <xsl:attribute name="{$QName}">blah</xsl:attribute> <xsl:value-of select="." /> </xsl:copy> </xsl:template>
But it produces this error message:
Undeclared prefix in attribute name: soap
What is the proper way to accomplish the desired transformation please?
/Roger
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] How to take a QName value and, Costello, Roger L. | Thread | Re: [xsl] How to take a QName value, Andrew Welch |
[xsl] How to take a QName value and, Costello, Roger L. | Date | Re: [xsl] How to take a QName value, Andrew Welch |
Month |