Re: [xsl] How to add a string to an attribute

Subject: Re: [xsl] How to add a string to an attribute
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Thu, 09 Oct 2003 13:33:16 -0400
At 2003-10-09 11:19 -0500, Uslu, Cihan Y (MED) wrote:
Following is the XML snippet that I'm working with;
...
What I want to do is; to count the item element and add this value in
front of title attribute and copy the rest of the information as it is.
What is the best way of doing this?

Using <xsl:number> in the parent's context.


I hope the following helps.

............... Ken

T:\uslu>type uslu.xml
<questestinterop>
        <item title="TT-1003_Mod01_Objective01_Title:"
ident="5112114679096874">
                <itemmetadata>
                <qmd_itemtype>Multiple Choice</qmd_itemtype>
                <qmd_status>Normal</qmd_status>
                <qmd_toolvendor>Vendor</qmd_toolvendor>
                <qmd_topic>Biomed Training\TT-1003</qmd_topic>
                </itemmetadata>
        </item>
        <item title="TT-1003_Mod01_Objective01_Title:"
ident="5112114679096874">
                <itemmetadata>
                <qmd_itemtype>Multiple Choice</qmd_itemtype>
                <qmd_status>Normal</qmd_status>
                <qmd_toolvendor>Vendor</qmd_toolvendor>
                <qmd_topic>Biomed Training\TT-1003</qmd_topic>
                </itemmetadata>
        </item>
            ....
            ....
</questestinterop>

T:\uslu>type uslu.xsl
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                version="1.0">

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="item/@title">
  <xsl:attribute name="title">
    <xsl:for-each select="..">
      <xsl:number format="000"/>
    </xsl:for-each>
    <xsl:text>_</xsl:text>
    <xsl:value-of select="."/>
  </xsl:attribute>
</xsl:template>

</xsl:stylesheet>

T:\uslu>saxon uslu.xml uslu.xsl
<?xml version="1.0" encoding="utf-8"?><questestinterop>
<item title="001_TT-1003_Mod01_Objective01_Title:" ident="5112114679096874">
<itemmetadata>
<qmd_itemtype>Multiple Choice</qmd_itemtype>
<qmd_status>Normal</qmd_status>
<qmd_toolvendor>Vendor</qmd_toolvendor>
<qmd_topic>Biomed Training\TT-1003</qmd_topic>
</itemmetadata>
</item>
<item title="002_TT-1003_Mod01_Objective01_Title:" ident="5112114679096874">
<itemmetadata>
<qmd_itemtype>Multiple Choice</qmd_itemtype>
<qmd_status>Normal</qmd_status>
<qmd_toolvendor>Vendor</qmd_toolvendor>
<qmd_topic>Biomed Training\TT-1003</qmd_topic>
</itemmetadata>
</item>
....
....
</questestinterop>
T:\uslu>





-- Next public US delivery: 3-day XSLT/2-day XSL-FO 2003-10-13 Next public European delivery: 3-day XSLT/2-day XSL-FO 2003-11-?? Instructor-led on-site corporate, government & user group training for XSLT and XSL-FO world-wide: please contact us for the details

G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
ISBN 0-13-065196-6                       Definitive XSLT and XPath
ISBN 0-13-140374-5                               Definitive XSL-FO
ISBN 1-894049-08-X   Practical Transformation Using XSLT and XPath
ISBN 1-894049-11-X               Practical Formatting Using XSL-FO
Member of the XML Guild of Practitioners:     http://XMLGuild.info
Male Breast Cancer Awareness  http://www.CraneSoftwrights.com/s/bc


XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list



Current Thread