私はxsltが新しく、xsltを使用してxml以下に変換しようとしています。私は以下のxsltを使用して2つのフィールドを変更しようとしています(1つは数字で、もう1つは文字列タイプです)。xsltの文字列を置き換える方法
<items>
<item>
<item_id>27989498</item_id>
<service>Test Fee1</service>
<rate>350</rate>
<quantity>1</quantity>
<tax_rate>0</tax_rate>
<item_date>2010-11-17-05:00</item_date>
</item>
</items>
XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="rate[ . > 0 ]">
<xsl:copy>100</xsl:copy>
</xsl:template>
<xsl:template match="service[ . &eq; 'Test Fee1' ]">
<xsl:copy>T1</xsl:copy>
</xsl:template>
出力:
<items>
<item>
<item_id>27989498</item_id>
<service>Test Fee1</service>
<rate>100</rate>
<quantity>1</quantity>
<tax_rate>0</tax_rate>
<item_date>2010-11-17-05:00</item_date>
</item>
</items>
XSLTの上、正しくレートフィールドを置き換えているが、文字列フィールド "サービス" のためにそれが意図した値を交換していません。 "eq"メソッドが動作していないので、xsltの文字列を比較して置き換える方法はありますか?
ハードコードの代わりに値のリストから置換値を選択することはできますか?テスト料金1等= T1、テスト料金2 = T2、テスト料金3 = T3
更新:例
要求XMLサービスタグには、一連の値を持たない代わりに、ランダムな値となり国の州名のようないくつかのキーに置き換える必要がある場合は、大文字と小文字の区別を考慮しないで州のコードに置き換える必要があります。
例:ニューヨーク= NYやニューヨーク= NY、アリゾナ州= ARなど
答えがそれ以上対応しないように質問を変更しました。あなたの質問を上書きするのではなく、それを元に戻して_extend_してください。 –
私は変更を加えて質問を更新しました。メソッドを提案して、大文字と小文字を区別しないで比較し、リストから値を取得することもできますか? – springbatcher
@springbatcherここで与えられた答えを受け入れて、新しい問題の新しい質問を投稿する方が良いでしょう。いずれにしても、XSLT 1.0またはXSLT 2.0を使用しているかどうかを知る必要があります。 XSLTについて質問するときには、 'xslt'に加えてこれらのタグの一つを選ぶことを習慣にしてください。 –