..
/
download
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:param name="duplicate" select="false()"/>
<xsl:param name="user-format"/>
<xsl:variable name="default-format">0.##</xsl:variable>
<xsl:template match="uom">
<xsl:element name="xsl:stylesheet">
<xsl:attribute name="version">1.0</xsl:attribute>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">pi</xsl:attribute>
<xsl:attribute name="select">3.14159265359</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:template">
<xsl:attribute name="match">@*|node()</xsl:attribute>
<xsl:element name="xsl:copy">
<xsl:element name="xsl:apply-templates">
<xsl:attribute name="select">@*|node()</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:if test="convert">
<xsl:element name="xsl:template">
<xsl:attribute name="match">
<xsl:text>quantityValue|qtyvalue|</xsl:text>
<xsl:text>quantityTolerance|qtytolerance|</xsl:text>
<xsl:text>quantity[not(*)]</xsl:text>
</xsl:attribute>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">uom</xsl:attribute>
<xsl:attribute name="select">
<xsl:text>@quantityUnitOfMeasure|@qtyuom|</xsl:text>
<xsl:text>parent::quantityGroup/@quantityUnitOfMeasure|parent::qtygrp/@qtyuom|</xsl:text>
<xsl:text>ancestor-or-self::quantity/@quantityTypeSpecifics</xsl:text>
</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">value</xsl:attribute>
<xsl:attribute name="select">.</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:copy">
<xsl:element name="xsl:apply-templates">
<xsl:attribute name="select">@*</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:choose">
<xsl:apply-templates select="convert">
<xsl:with-param name="uom-format" select="@format"/>
</xsl:apply-templates>
<xsl:element name="xsl:otherwise">
<xsl:element name="xsl:value-of">
<xsl:attribute name="select">.</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:template">
<xsl:attribute name="match">
<xsl:text>@quantityUnitOfMeasure|@qtyuom|</xsl:text>
<xsl:text>@quantityTypeSpecifics</xsl:text>
</xsl:attribute>
<xsl:element name="xsl:attribute">
<xsl:attribute name="name">{name()}</xsl:attribute>
<xsl:element name="xsl:choose">
<xsl:apply-templates select="convert" mode="attr"/>
<xsl:element name="xsl:otherwise">
<xsl:element name="xsl:value-of">
<xsl:attribute name="select">.</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:template>
<xsl:template match="convert">
<xsl:param name="uom-format"/>
<xsl:variable name="format">
<xsl:choose>
<xsl:when test="@format">
<xsl:value-of select="@format"/>
</xsl:when>
<xsl:when test="$user-format">
<xsl:value-of select="$user-format"/>
</xsl:when>
<xsl:when test="$uom-format">
<xsl:value-of select="$uom-format"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$default-format"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="xsl:when">
<xsl:attribute name="test">
<xsl:text>$uom = '</xsl:text>
<xsl:value-of select="@from"/>
<xsl:text>'</xsl:text>
</xsl:attribute>
<xsl:if test="$duplicate and @from != @to">
<xsl:element name="xsl:processing-instruction">
<xsl:attribute name="name">s1kd-uom_CONVERTED</xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:element name="xsl:value-of">
<xsl:attribute name="select">
<xsl:choose>
<xsl:when test="@formula">
<xsl:text>format-number(</xsl:text>
<xsl:value-of select="@formula"/>
<xsl:text>, '</xsl:text>
<xsl:value-of select="$format"/>
<xsl:text>')</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>$value</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="convert" mode="attr">
<xsl:element name="xsl:when">
<xsl:attribute name="test">
<xsl:text>. = '</xsl:text>
<xsl:value-of select="@from"/>
<xsl:text>'</xsl:text>
</xsl:attribute>
<xsl:value-of select="@to"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
gopher://khzae.net/0/s1000d/s1kd-tools/src/tools/s1kd-uom/uom.xsl