テンプレート ソリューションについては、次を試してください。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="obs">
<marker name="{@station}">
<xsl:apply-templates />
</marker>
</xsl:template>
<xsl:template match="*" />
<xsl:template match="d[@t='tx']">
<maxTemperature><xsl:value-of select="." /></maxTemperature>
</xsl:template>
<xsl:template match="d[@t='tn']">
<minTemperature><xsl:value-of select="." /></minTemperature>
</xsl:template>
<xsl:template match="d[@t='r']">
<rainTo9am><xsl:value-of select="." /></rainTo9am>
</xsl:template>
<xsl:template match="d[@t='wr']">
<windRun><xsl:value-of select="." /></windRun>
</xsl:template>
</xsl:stylesheet>
または、より小さな wysiwyg ソリューションの場合は、次を試してください。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="obs">
<marker name="{@station}">
<maxTemperature><xsl:value-of select="d[@t='tx']" /></maxTemperature>
<minTemperature><xsl:value-of select="d[@t='tn']" /></minTemperature>
<rainTo9am><xsl:value-of select="d[@t='r']" /></rainTo9am>
<windRun><xsl:value-of select="d[@t='wr']" /></windRun>
</marker>
</xsl:template>
</xsl:stylesheet>