要素の繰り返しやxsl IDテンプレートの使用方法については、かなりのスレッドを使いました。しかし、私の要求は、変換を必要とするフィールドのカップルでほとんどの要素を繰り返すことです。要素の変換が少ないXSLT 2.0で繰り返し要素を取得
<?xml version="1.0" encoding="UTF-8"?>
<Roots xmlns="urn:com.mydish/extps">
<Root>
<Worker>100</Worker>
<Group></Group>
<Amount>1165851.81</Amount>
<Currency>USD</Currency>
<Check>201705091204</Check>
<File_Name>1.pdf</File_Name>
</Root>
<Root>
<Worker>20</Worker>
<Group></Group>
<Amount>231456.41</Amount>
<Currency>USD</Currency>
<Check>201705091204</Check>
<File_Name>2.pdf</File_Name>
</Root>
</Roots>
出力がなければならない:
はここに私の入力である
<?xml version="1.0" encoding="UTF-8"?>
<Roots xmlns="urn:com.mydish/extps">
<Root>
<Worker>C10</Worker>
<Group>Group1</Group>
<Amount>1165851.81</Amount>
<Currency>USD</Currency>
<Check>201705091204</Check>
<File_Name>1.pdf</File_Name>
</Root>
<Root>
<Worker>C20</Worker>
<Group>Group2</Group>
<Amount>231456.41</Amount>
<Currency>USD</Currency>
<Check>201705091204</Check>
<File_Name>2.pdf</File_Name>
</Root>
</Roots>
ので、ロジック入力ワーカーの長さに依存している、出力労働者とグループフィールドが変換されます。
入力ワーカーの長さが3桁の場合、出力ワーカーはCと最初の2桁(C10)になり、GroupはGroup1になります。入力作業者の長さが2桁の場合は、Cを連結して(C20)のようにWorkerを出力し、GroupはGroup2になります。
残りは入力と同じである必要があります。
これを変換する方法は? 以下は正しいですか?私はこれがそのままでは動作しないと理解しています。
<Worker>
<xsl:value-of select="if string-length(Worker)='3' then concat('C',substring(Worker,1,2)) else concat('C',Worker)" />
</Worker>
<Group>
<xsl:value-of select="if string-length(Worker)='3' then 'Group1' else 'Group2'" />
</Group>
ありがとうございます。これは機能しています。もちろん、あなたが指摘したトピックを学びます。それは本当に役立ちます。 – user3836593