希望有人可以对此提供帮助,我希望我对它有所解释,以便有人能够理解。
基本上在要发送的xml文件中有一个标签“ InvBatchNr”,该值的长度可以是任何值,但是我尝试上传到的系统只能接受15个字符,所以我想要样式表处理这种情况。
因此,如果“ InvBatchNr”的长度大于15个字符,则采用最后15个字符,如果不大于15个字符,则使用“ InvBatchNr”的整个值
示例: XML包含
<InvBatchNr>A00006_54324033_PRIMA01ES</InvBatchNr>
在此示例中,要使用样式表,我要提取“ 24033_PRIMA01ES”
这是我到目前为止尝试过的
<xsl:choose>
<xsl:when test="string-length('InvBatchNr') > 15">
<xsl:value-of select="substring('InvBatchNr', string-length('InvBatchNr'), -15)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select='InvBatchNr'/>
</xsl:otherwise>
</xsl:choose>
尽管这没有给我任何错误,但返回的值实际上为空白。 任何我要出错的指针都很好
预先感谢 艾伦
答案 0 :(得分:1)
如果要引用元素,则InBatchNr
的元素名称不应带有引号。您的示例选择的是字符串文字而不是XPath来选择名为InBatchNr
的元素。将string-length('InvBatchNr') > 15
更改为string-length(InvBatchNr) > 15
,然后在子字符串内部进行调整。
如果要选择最后15个字符中的substring()
,则第二个参数应该是字符起始位置。您是说从string-length()
的位置开始,然后继续-15
个字符。
相反,您想从string-length(InBatchNr) - 14
开始,然后要么指定读取15个字符,要么不指定第三个参数,以便它读取到字符串的末尾。
<xsl:choose>
<xsl:when test="string-length(InvBatchNr) > 15">
<xsl:value-of select="substring(InvBatchNr, string-length(InvBatchNr) - 14)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="InvBatchNr"/>
</xsl:otherwise>
</xsl:choose>