如何使用XSLT 1.0转换XML格式的单位

时间:2016-12-07 13:17:47

标签: xml xslt-1.0

我正在尝试像这样转换XML

<product>
    <package>3.9L</package>
</product>
<product>
    <package>250g</package>
</product>
<product>
    <package>2.8kg</package>
</product>

到这样的XML

<product>
    <weight>3.9</weight>
    <unit>L</unit>
</product>
<product>
    <weight>0.25</weight>
    <unit>g</unit>
</product>
<product>
    <weight>2.8</weight>
    <unit>kg</unit>
</product>

我需要分离包的数字和文本部分,并根据文本部分(单位)决定将使用什么公式来计算权重。 有任何想法如何使用XSLT 1.0?

1 个答案:

答案 0 :(得分:1)

您可以按如下方式使用translate

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

<xsl:template match="package">
    <weight>
        <xsl:value-of select="translate(., translate(., '0123456789.', ''), '')"/>
    </weight>
    <unit>
        <xsl:value-of select="translate(., '0123456789.', '')"/>
    </unit>
</xsl:template>