3

XSL を使用して次のフィールドの最後の 6 桁を出力する方法を考え出そうとしています。

<NameReference Text="4380.401.0500-111820" />

xml ファイルに基づいて次の式を記述しました。

<xsl:if test="">
<xsl:for-each select="NameReference">
<ID>
<Data>
<xsl:value-of select="substring(@Text,-6)"/>
</Data>
</ID>
</xsl:for-each>
</xsl:if>

しかし、出力は「43804010500111820」のようになりました。基本的に、フィールド全体を目的のデータとして解析します。ここでは、ダッシュ '-' の後の最後の 6 桁のみを探しています。左から右に移動しようとしましたが、うまくいきませんでした。どんな助けでも大歓迎です。

4

2 に答える 2

3

関数の 2 番目のパラメーターsubstringは開始位置です。あなたはそのlength-6位置から文字を取り始めたいと思っています。

試す

substring(@Text, string-length(@Text) - 6)
于 2013-03-14T14:01:27.110 に答える
1

後で参照するために、 substring-after関数について知っておく価値があるかもしれません。これは、ハイフンの後の桁数が可変の場合に使用すると便利です。この場合、これを行うことができます:

 <xsl:value-of select="substring-after(@Text, '-')" />

この場合も出力111820されるはずです。

于 2013-03-14T14:28:52.773 に答える