23

現在のXSLTを編集しようとしています。必要な機能は、「//code_no」の値が01で終わる場合です。現在の都市の場所を編集します。現在、この機能は存在しません。文字列と部分文字列を使用してみましたが、機能で終わる機能が存在しないというエラーが表示されます。助けてください

xmlからの値は

<code_no>
1870410001
</code_no>

xslで、値が01で終わるときにこれを出力したいと思います。

<td align="left" width="33%"><SPAN style="font-size: 12pt; font-family: Arial;">
    <a> <b><u><xsl:value-of select="//city"/>, <xsl:value-of select="//state"/> 
    </u></b></a></SPAN></td>
4

6 に答える 6

43

(XPath 2.0)式に相当するXPath 1.0:

ends-with($s, $t)

です

$t = substring($s, string-length($s) - string-length($t) +1)

最後のXPath式で、テストする文字列$s$tテストするエンディングをそれぞれ置き換える必要があります。

完全な例を次に示します。

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="x|y">
     <xsl:value-of select="name()"/> ends-with '_01': <xsl:value-of select=
     "'_01' = substring(., string-length() - 2)"/>
=============   
 </xsl:template>
</xsl:stylesheet>

この変換が次のXMLドキュメントに適用された場合(質問には何も提供されていません!!!):

<t>
 <x>abcd_01</x>
 <y>abcd_11</y>
</t>

必要な正しい結果が生成されます。

x ends-with '_01': true
=============   
 y ends-with '_01': false
=============   
于 2012-08-08T03:13:58.030 に答える
2

XSLT 1.0は、 という名前の関数を含まないXPath 1.0を使用しますends-with。ここにある手法を使用して偽造できます。

于 2012-08-07T15:11:01.683 に答える