xml - XSLT - Set attribute with value of child -
i want set attribute of parent based on value of first child. using xslt 1.0.
<div> <div> <span>a</span> <span>text...text</span> </div> <div> <span>1</span> <span>text...text</span> </div> </div> should transformed to:
<div> <div data-type="alphanumeric"> <span>text...text</span> </div> <div data-type="numeric"> <span>text...text</span> </div> </div> can me how can this?
thank you!
try like:
xslt 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/> <xsl:strip-space elements="*"/> <!-- identity transform --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="div[span]"> <xsl:copy> <xsl:attribute name="data-type"> <xsl:choose> <xsl:when test="translate(span[1], '0123456789', '')">alphanumeric</xsl:when> <xsl:otherwise>numeric</xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> note selects numeric when value contains digits only; iow, value of <span>0.1</span> tagged alphanumeric.
alternatively, use:
<xsl:when test="number(span[1])=number(span[1])">numeric</xsl:when> <xsl:otherwise>alphanumeric</xsl:otherwise> which tag number numeric.
Comments
Post a Comment