gpt4 book ai didi

xml - 需要 XSL 帮助

转载 作者:数据小太阳 更新时间:2023-10-29 02:05:44 26 4
gpt4 key购买 nike

你好我是 XSL 的初学者,几乎不知道什么命令。我正在尝试一个示例,其中我必须根据 XML 中的条目格式化数字。我想使用 format-number 函数来实现相同的目的。

<Details>
<Order>Bulk Order</Order>
<OrderDate>1997-07-16T19:20:30+01:00</OrderDate>
<Quantity>100</Quantity>
<Price>99.45</Price>
<Format>de_DE</Format>
</Details>


<Details>
<Order>Bulk Order</Order>
<OrderDate>1997-07-16T19:20:30+01:00</OrderDate>
<Quantity>100</Quantity>
<Price>99.45</Price>
<Format>en_US</Format>
</Details>

但是,如果我使用,我可以渲染输出:

<xsl:value-of select='format-number(500100, "###,###.00")' />

但是我想使用某个条件

即如果格式是 de_DE :我想将 ###.###,00 传递给 format-number 方法(注意小数点和千位分隔符)或者如果格式是 en_US我想将 ###,###.00 传递给 format-number 方法

我绝望地尝试使用 choose 语句(但我真的不知道用法的语法)

<xslt:choose>
<xslt:when test="$format = 'de_DE'">###,###.00</xslt:when>
<xslt:when test="$format = 'en_US'">###.###,00</xslt:when>
<xslt:otherwise>###.###,00</xslt:otherwise>
</xslt:choose>

谁能帮我把它放到模板或其他东西上,这样我就可以打电话<强> 我根据 XML 中存在的格式获得输出

谢谢斯里瓦察

最佳答案

XSLT 具有 <xsl:decimal-format> 特别针对这种情况的指令

这个转换:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>

<xsl:decimal-format name="de_DE" decimal-separator="." grouping-separator="," />
<xsl:decimal-format name="en_US" decimal-separator="," grouping-separator="."/>

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

<xsl:template match="Price/text()">
<xsl:value-of select="format-number(., '#,###.##', ../../Format)"/>
</xsl:template>
</xsl:stylesheet>

应用于提供的 XML 文档时(包装到顶部元素节点以使其格式正确):

<t>
<Details>
<Order>Bulk Order</Order>
<OrderDate>1997-07-16T19:20:30+01:00</OrderDate>
<Quantity>100</Quantity>
<Price>1199.45</Price>
<Format>de_DE</Format>
</Details>
<Details>
<Order>Bulk Order</Order>
<OrderDate>1997-07-16T19:20:30+01:00</OrderDate>
<Quantity>100</Quantity>
<Price>1199.45</Price>
<Format>en_US</Format>
</Details>
</t>

产生想要的结果:

<t>
<Details>
<Order>Bulk Order</Order>
<OrderDate>1997-07-16T19:20:30+01:00</OrderDate>
<Quantity>100</Quantity>
<Price>1,199.45</Price>
<Format>de_DE</Format>
</Details>
<Details>
<Order>Bulk Order</Order>
<OrderDate>1997-07-16T19:20:30+01:00</OrderDate>
<Quantity>100</Quantity>
<Price>1199,45</Price>
<Format>en_US</Format>
</Details>
</t>

关于xml - 需要 XSL 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4223776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com