使用XSLT(编号转换)将XML转换为另一个XML

使用XSLT(编号转换)将XML转换为另一个XML

问题描述:

我正尝试使用XSLT将XML转换为另一个XML。 这是我的输入XML:使用XSLT(编号转换)将XML转换为另一个XML

... 
<size>21467</size> 
.... 

我想这个输入XML转换成XML输出看起来像这样:

... 
<HAS> 
<C SZ="21k"/> 
</HAS> 
... 

我的XSLT代码:

... 
<HAS> 
<C> 
<xsl:attribute name="SZ" select="xs:string(xs:anyURI(fn:string($var1_resultof_first/size)))" /> 
</C> 
</HAS> 
.. 

我米不知道如何将大小“21467”转换为“21k”。任何帮助,将不胜感激

+0

一个例子是不足以表达的规则。给定的值是否总是大于1,000?如果不是,那么结果应该是什么? –

+0

我已经有一个适用于所有元素的模板。我不能使用两个模板。有没有其他办法可以做到这一点?我的号码大于1,000 – Rose

+0

“*我无法使用两个模板。*”您可以根据需要使用尽可能多的模板。无论如何,这不是这里的重要部分。 'format-number($ input div 1000,'0k')'是。按照你的意愿使用它。 –

下面的模板:适用于您的输入例如

<xsl:template match="size"> 
    <HAS> 
     <C SZ="{format-number(. div 1000, '0k')}"/> 
    </HAS> 
</xsl:template> 

,将返回:

<HAS> 
    <C SZ="21k"/> 
</HAS>