我试图转换一些数据。我的xml字段“Source / End / Edgecode”中包含的数据看起来像-000016 我想删除领先的破折号。我以为我可以使用abs或者正确,但我不知道正确的语法。 谢谢你的帮助... *来自CLIP NAME:
<xsl:template name="frame_to_tc">
<xsl:param name="frame"/>
<xsl:variable name="hh" select="($frame div $fph)"/>
<xsl:variable name="rh" select="($frame mod $fph)"/>
<xsl:variable name="mm" select="($rh div $fpm)"/>
<xsl:variable name="rm" select="($rh mod $fpm)"/>
<xsl:variable name="ss" select="($rm div $fps)"/>
<xsl:variable name="rs" select="($rm mod $fps)"/>
<xsl:variable name="ff" select="($rs mod $fps)"/>
<xsl:value-of select="format-number(floor($hh),'00')"/>
<xsl:text>:</xsl:text>
<xsl:value-of select="format-number(floor($mm),'00')"/>
<xsl:text>:</xsl:text>
<xsl:value-of select="format-number(floor($ss),'00')"/>
<xsl:text>:</xsl:text>
<xsl:value-of select="format-number(floor($ff),'00')"/>
答案 0 :(得分:1)
您可以使用简单的子字符串。
<xsl:value-of select="substring($yourVariable, 2)"/>
<!-- In XSLT, the index starts from 1, so here you are taking a substring starting from the second character, in essence, leaving out the hyphen-->
甚至节点直接代替变量..
<xsl:value-of select="substring(/Your/Path/Here, 2)"/>
由于您没有指定要返回的特定数量的字符,因此它将完全返回字符串的其余部分。您可以通过添加逗号然后指定要剪切的第二个长度来限制返回的字符数。例如:substring(/Your/Path/Here , 2, 5)
这将从第二个字符切割到五个字符,如果字符串是“1234567”,它将返回“23456”。
注意:这假设您只想删除前导连字符。如果你想删除前导零,那么数字()类型转换应该可以解决问题。
答案 1 :(得分:1)
<xsl:template name="abs">
<xsl:param name="input" select="0">
<xsl:variable name="num" select="number(input)" />
<xsl:choose>
<xsl:when test="$num >= 0">
<xsl:value-of select="$num" />
</xsl:when>
<xsl:when test="$num < 0">
<xsl:value-of select="-1 * $num" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$input" />
</xsl:otherwise>
</xsl:choose>
<xsl:template>
可以这样调用:
<xsl:variable name="absnum">
<xsl:call-template name="abs">
<xsl:with-param name="input" select="some/number" />
</xsl:call-template>
</xsl:variable>
答案 2 :(得分:0)
要删除主要破折号,请尝试this XPath function:
<xsl:value-of select="substring-after($x,'-')"/>