This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: XML and XSLT
Matt.Varney@kctcs.net wrote:
>
> I would like to use XSTL to transform one XML doc (call it "A") into a new
> XML doc (call it "B"):
>
> Here is "A":
>
> <?xml version="1.0"?>
> <dsobjects>
> <prop>
> <title>President's Office Staff</title>
> <summary>Financial Reports for President's Office
> Staff</summary>
> </prop>
> <prop>
> <title>VP of Finance</title>
> <summary>Financial Reports for VP of Finance</summary>
> </prop>
> <title>VP of External Affairs</title>
> <summary>Financial Reports for VP of External
> Affairs</summary>
> </prop>
> <prop>
> <title>VP of Internal Affairs</title>
> <summary>Financial Reports for VP of Internal
> Affairs</summary>
> </prop>
> ...etc...........
> <dsobjects>
>
> And here is "B":
>
> <?xml version="1.0"?>
> <dsobjects>
> <dsobject type="Collection" handle="Collection-100">
> <prop>
> <title>President's Office Staff</title>
> <summary>Financial Reports for President's Office
> Staff</summary>
> </prop>
> </dsobject>
> <dsobject type="Collection" handle="Collection-101">
> <prop>
> <title>VP of Finance</title>
> <summary>Financial Reports for VP of
> Finance</summary>
> </prop>
> </dsobject>
> <dsobject type="Collection" handle="Collection-102">
> <prop>
> <title>VP of External Affairs</title>
> <summary>Financial Reports for VP of External
> Affairs</summary>
> </prop>
> </dsobject>
> <dsobject type="Collection" handle="Collection-103">
> <prop>
> <title>VP of Internal Affairs</title>
> <summary>Financial Reports for VP of Internal
> Affairs</summary>
> </prop>
> </dsobject>
>
> ......etc......
>
> </dsobjects>
>
> As you can see, the "B" sample adds a counting element to identify each
> individual "dsobject type". There will be several hundred of these to tag
> with a sequential number.
>
> Can anyone help suggest the syntax of the XSL doc to apply against XML Doc
> "A" to produce XML doc "B"?
<xsl:template match="dsobjects|title|summary">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="prop">
<dsobject type="Collection">
<xsl:attribute name="handle">Collection-<xsl:value-of select="100 +
count(preceding-sibling::prop)"/></xsl:attribute>
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</dsobject>
</xsl:template>
--
cheers
phil
"The smile Ulrich gave him in answer said: I don't know;
let me wait and see what more you have to say." Musil
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list