|
Subject: Re: [xsl] XML-to-XML question From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx> Date: Thu, 1 Mar 2001 10:45:45 +0000 |
Hi Wolfgang,
> However, my incoming files contain style attributes in the form of a
> comma-delimited string, which I was trying to parse into individual
> attributes much like:
>
> <svg style="font-family:value1,font-size:value2,font-style:value3">
> which I want to output as:
> <svg font-family="value1" font-size="value2" font-style="value3">.
You can create attributes while setting their names and values
dynamically using the xsl:attribute element:
<xsl:attribute name="{$attr-name}">
<xsl:value-of select="$attr-value" />
</xsl:attribute>
So, you need to recursively go through the string and generate those
attribute definitions:
<xsl:template match="*[string(@style)]" mode="attributeise-style"
name="attributeise-style">
<xsl:param name="style" select="@style" />
<xsl:choose>
<xsl:when test="contains($style, ',')">
<xsl:call-template name="attributeise-property">
<xsl:with-param name="property"
select="substring-before($style, ',')" />
</xsl:call-template>
<xsl:call-template name="attributeise-style">
<xsl:with-param name="style"
select="substring-after($style, ',')" />
</xsl:call-template>
</xsl:when>
<xsl:when test="string($style)">
<xsl:call-template name="attributeise-property">
<xsl:with-param name="property" select="$string" />
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="attributeise-property">
<xsl:param name="property" />
<xsl:attribute
name="{normalize-space(substring-before($property, ':'))}">
<xsl:value-of
select="normalize-space(substring-after($property, ':'))" />
</xsl:attribute>
</xsl:template>
You can call the above templates with:
<xsl:template match="svg">
<svg>
<xsl:apply-templates select="." mode="attributeise-style" />
</svg>
</xsl:template>
I hope that helps,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] XML to WML/CHTML example , Pavanan Archana | Thread | lang suggestion for XSLT1.1 was Re:, cutlass |
| [xsl] XML to WML/CHTML example need, Brian O'Neill | Date | Re: [xsl] ANNOUNCE: Petition to wit, Eric van der Vlist |
| Month |