【问题标题】:How to convert number 1, 2,3 in word format like One, two, Three in xsltHow to convert number 1, 2,3 in word format like One, two, Three in xslt
【发布时间】:2022-12-02 08:43:16
【问题描述】:

I have an in put xml file which contain 20<.entry> element. the value of entry should be convert into word like "Twenty" I want to convert till number 100.

Input:

<input>
    <entry>46</entry>
</input>

XSLT:

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8" />

<xsl:variable name="numbertoword">
<number Num="1" Word="One "/>
<number Num="2" Word="Two "/>
<number Num="3" Word="Three "/>
<number Num="4" Word="Four "/>
<number Num="5" Word="Five "/>
<number Num="6" Word="Six "/>
<number Num="7" Word="Seven "/>
<number Num="8" Word="Eight "/>
<number Num="9" Word="Nine "/>
<number Num="11" Word="Eleven " />
<number Num="12" Word="Twelve " />
<number Num="13" Word="Thirteen " />
<number Num="14" Word="Fourteen " />
<number Num="15" Word="Fifteen " />
<number Num="16" Word="Sixteen " />
<number Num="17" Word="Seventeen " />
<number Num="18" Word="Eighteen " />
<number Num="19" Word="Nineteen " />
<number Num="20" Word="Twenty" />
<number Num="21" Word="Twenty one"/>
<number Num="22" Word="Twenty two"/>
<number Num="23" Word="Twenty three"/>
<number Num="24" Word="Twenty four"/>
<number Num="25" Word="Twenty five"/>
<number Num="26" Word="Twenty six"/>
<number Num="27" Word="Twenty seven"/>
<number Num="28" Word="Twenty eight"/>
<number Num="29" Word="Twenty nine"/>
<number Num="30" Word="Thirty " />
<number Num="31" Word="Thirty one" />
<number Num="32" Word="Thirty two" />
<number Num="33" Word="Thirty three" />
<number Num="34" Word="Thirty four" />
<number Num="35" Word="Thirty five" />
<number Num="36" Word="Thirty six" />
<number Num="37" Word="Thirty seven" />
<number Num="38" Word="Thirty eight" />
<number Num="39" Word="Thirty nine" />
<number Num="40" Word="Forty " />
<number Num="41" Word="Forty one" />
<number Num="42" Word="Forty two" />
<number Num="43" Word="Forty three" />
<number Num="44" Word="Forty four" />
<number Num="45" Word="Forty five" />
<number Num="46" Word="Forty six" />
<number Num="47" Word="Forty seven" />
<number Num="48" Word="Forty eight" />
<number Num="49" Word="Forty nine" />
<number Num="50" Word="Fifty " />
<number Num="10" Word="Ten " />
<number Num="20" Word="Twenty " />
<number Num="60" Word="Sixty " />
<number Num="70" Word="Seventy " />
<number Num="80" Word="Eighty " />
<number Num="90" Word="Ninety " />
</xsl:variable>

<xsl:template match="/input">
    <xsl:for-each select="entry">
    <xsl:value-of select="$numbertoword/number[@Num = current()]/@Word"/>
    </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Output: Fourty Six

I have taken word number into variable from which i comparing number from my input file and behalf of them i am getting right output but I want made my output more dynamic.

【问题讨论】:

  • What does "I want made my output more dynamic" mean?
  • I want output in less code as i taken variable for converting number into word. I want it through function.

标签: xml xslt-2.0


【解决方案1】:

XPath (3.1 at least, don't remember whether 2.0 also has it) provides e.g. w as the flag for e.g. format-integer(46, 'w') to spell out the number as a word.

【讨论】:

  • Is it possible in xslt 2.0?
  • I have checked now that format-integer was not in XPath 2.0 and that way also not in pure XSLT 2.0 as specified by the standards/W3C recommendations. Depending on the processor you use check whether you can update to a version supporting XSLT 3 or whether an extension function exists that does a similar job.
  • May you help please using extension function
【解决方案2】:

I got my solution by using &lt;xsl:number/&gt;

<xsl:number value="." format="w" lang="en"/>

【讨论】:

    猜你喜欢
    • 2022-11-09
    • 2022-12-27
    • 2022-11-20
    • 2022-12-26
    • 2022-12-02
    • 2022-12-02
    • 2022-12-01
    • 2022-12-01
    • 2022-12-01
    相关资源
    最近更新 更多