多くの場合、mp3 タグは「アーティスト - タイトル」の形式ですが、タイトル フィールドに保存されます。
値をアーティスト + タイトル フィールドに分割したいと考えています。
分割前後の例:
<title>Artist - Title</title>
<title> - Title</title>
<title>Artist - </title>
<title>A title</title>
後:
<artist>Artist</artist><<title>Title</title>
<artist /><title>Title</title>
<artist>Artist</artist><title />
<artist /><title>A title</title>
私は XSLT でのプログラミングをあまり経験していないので、通常の言語で使用するイディオムが適合するかどうか、また適合する場合、どの XSLT 言語要素を使用するのが最適かはわかりません。
これは私が通常それにアプローチする方法です:
- 最初の「 - 」の位置を計算する
- 見つからない場合は、
title
要素をそのまま返し、空のartist
要素を返します - 位置 0 で見つかった場合は、要素から削除し
title
、残りのtitle
タグを新しいtitle
要素と空のartist
要素として返します。 - 長さ 3 の位置にある場合は、要素から削除し
title
、残りのtitle
タグを新しいartist
要素と空のtitle
要素として返します。 - 0より大きい位置で見つかった場合、その位置まですべてを要素としてコピーし、
artist
それ以降のすべてを新しいtitle
要素として返します