サイトTop
Top | その他 Top

[1]

XSLTの文字の切りだしって使いにくい…

--():

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), ' !&#34;#$%&&#38;()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz{|}~', ''))))" /><xsl:if test="string-length(aws:ItemAttributes/aws:Title) &gt; 14 + (string-length(substring(aws:ItemAttributes/aws:Title, 1, 14)) - string-length(translate(substring(aws:ItemAttributes/aws:Title, 1, 14), ' !&#34;#$%&&#38;()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz{|}~', '')))"> ...</xsl:if>

上記の記述で、Internet Explorer 6では意図した通りに変換できました。

ただ、Amazon Webサービスで変換するにはきついようです。

あらかじめ短めに文字列を切り出し済のXMLを返してくれると良いんですけどね…。



written by GOROH


コンタクト

メール


©2006 CJ?GOROH All Rights Reserved.


[0]このページのTop

Generated by MySketch GE 1.6.1