Amazon Webサービス(Amazon ECS 4.0)用に用意したXSLファイルをローカルでテストしてみたのですが、文字数のカウントではまりました。
というのも、Internet Explorer 6でXSLT変換をしていたのですが、「string-length()」と「substring()」で全角と半角をどちらも1文字としてカウントします。
1バイト単位でカウントしてくれないため、単純に「string-length()」と「substring()」で文字列のカウントと切り出しをしたのでは、扱う文字列によって出力される文字列のバイト数が異なります。
それでも試しに、次のような感じで切り出してみました。
<xsl:value-of select="substring(aws:ItemAttributes/aws:Title, 1, 14 + (string-length(substring(aws:ItemAttributes/aws:Title, 1, 14)) - string-length(translate(substring(aws:ItemAttributes/aws:Title, 1, 14), ' !"#$%&&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz{|}~', ''))))" /><xsl:if test="string-length(aws:ItemAttributes/aws:Title) > 14 + (string-length(substring(aws:ItemAttributes/aws:Title, 1, 14)) - string-length(translate(substring(aws:ItemAttributes/aws:Title, 1, 14), ' !"#$%&&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz{|}~', '')))"> ...</xsl:if>
上記の記述で、Internet Explorer 6では意図した通りに変換できました。
ただ、Amazon Webサービスで変換するにはきついようです。
あらかじめ短めに文字列を切り出し済のXMLを返してくれると良いんですけどね…。
©2006 CJ?GOROH All Rights Reserved.
[0]このページのTop
Generated by MySketch GE 1.6.1