2017-08-30 13 views
-3

重複する質問のように見えますが、そうではありません(私はまったく検索して答えを見つけることができませんでした)。値の長さを保持する属性のXSLTインクリメント値同じ

私はXSLTをXMLに変換する必要があり、値を増やす必要がある属性がありますが、最後の部分がインクリメントされる値の設定フォーマットが与えられていますが、

XSLT:

<xsl:for-each select="Transactions/Transaction"> 
<Interaction 
SourceCode="SRC12799" 
ExternalID="ERHYDM000000000{position()}"> 
</Interaction> 
</xsl:for-each> 

OUTPUT:

<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000001"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000002"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000003"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000004"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000005"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000006"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000007"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000008"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000009"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM00000000010"> <!-- Issue with length --> 
値は18の文字、私が持っているものの相続人の作業例を超えることはできません。

所望の出力(外部IDの長さは同じままにしてください):値をインクリメントしながら

<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000001"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000002"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000003"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000004"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000005"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000006"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000007"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000008"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000009"> 
<Interaction SourceCode="SRC12799" ExternalID="ERHYDM0000000010"> <!-- This is the corrected part (Same will happen for 100s 10000s and so on) --> 

はどのようにして値を一定の長さを維持していますか?

+0

必要なロジックは完全には明確ではありません。すでに15文字あります。一度999に達すると、何かを捨てなければなりません。 –

答えて

1

以下のコードは、必要な書式を提供します。 001から999まで、つまり999 <Transaction>ノードでは機能します。

<xsl:variable name="srcCd" select="'SRC12799'" /> 
<xsl:variable name="extIdPfx" select="'ERHYDM000000000'" /> 
<xsl:for-each select="Transactions/Transaction"> 
    <xsl:variable name="extId" select="concat($extIdPfx, format-number(position(),'000'))" /> 
    <Interaction> 
     <xsl:attribute name="SourceCode"> 
      <xsl:value-of select="$srcCd" /> 
     </xsl:attribute> 
     <xsl:attribute name="ExternalID"> 
      <xsl:value-of select="$extId" /> 
     </xsl:attribute> 
    </Interaction> 
</xsl:for-each> 
関連する問題