【发布时间】:2014-02-27 17:32:38
【问题描述】:
我已经搜索了几天,找到了一个示例 [这里][1]
[1]:XSLT formatting numbers, insert '-' after every 4 digits starting from the right most digit,但它似乎没有按预期工作。
这是我需要做的。我有一个 7 位数字,例如“1122334”,我需要将其强制为“11-22-33-4”。
到目前为止,这是我的代码:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<xsl:template match="/dataset">
<xsl:decimal-format name="dashes" grouping-separator='-'/>
<dataset>
<!-- Nullify (0040,A043) Concept Name Code Sequence -->
<attr tag="0040A043" vr="SQ"/>
</dataset>
<dataset>
<xsl:variable name="modPatientID" select="attr[@tag='00100020']"/>
<xsl:variable name="AccNum" select="attr[@tag='00080050']"/>
<xsl:if test="string-length($modPatientID)=7">
<xsl:if test="contains(attr[@tag='00080050'],'_')">
<!-- (0008,0050) Accession_Number -->
<attr tag="00100020" vr="LO">
<xsl:value-of select="format-number($modPatientID, '##-##-##-#','dashes')"/>
</attr>
</xsl:if>
</xsl:if>
</dataset>
</xsl:template>
</xsl:stylesheet>
我得到的输出是“1-1-2-2-3-3-4”,我希望它看起来像“11-22-33-4”
谁能向我解释我做错了什么?如果可能,我想继续使用“格式编号”功能。
谢谢
-沮丧
【问题讨论】:
-
你能显示你的源 XML 吗?那是你的工作 XSL 文件吗?
<xsl:decimal-format>应该是顶级的。我认为如果它在template内,它甚至不会编译。尝试将 $modPatientID 替换为“1122334”。它是否按预期工作? -
还没有运气 - 这是我的工作 XSL 文件。我将
移到顶层(模板上方),但它仍然没有任何影响。输出仍然是 '1-1-2-2-3-3-4' 我保留了这个更改,然后我尝试用 '1122334' 替换 $modPatientID 并且输出仍然是 '1-1-2-2- 3-3-4'。