2017-11-21 1 views
0

ご協力いただきありがとうございます。私は数値の範囲に基づいて値を取得しようとしている間にxpathクエリの問題に直面しています。数字の範囲に基づいてxmlノードの値を取得中にXSLTクエリの問題が発生する

次の2行は、 'daily_bundles_mapping.xml' ファイルに

<xsl:variable name="dailyBundleMappingFile" select="'daily_bundles_mapping.xml'"/> 

<xsl:variable name="docDailyBundleMappingFile" select="document($dailyBundleMappingFile)"/> 
を読みます

<DAILY_BUNDLE_MAPPING_LIST> 
<DAILY_BUNDLE_MAPPING_INFO> <SPEND_LIMIT_1_MIN>1 </SPEND_LIMIT_1_MIN> <SPEND_LIMIT_1_MAX>1.49</SPEND_LIMIT_1_MAX> <UC_ID>143</UC_ID> <UT_ID>143001</UT_ID> /DAILY_BUNDLE_MAPPING_INFO> 
<DAILY_BUNDLE_MAPPING_INFO> <SPEND_LIMIT_1_MIN>1.50</SPEND_LIMIT_1_MIN> <SPEND_LIMIT_1_MAX>1.99</SPEND_LIMIT_1_MAX> <UC_ID>143</UC_ID> <UT_ID>143003</UT_ID> /DAILY_BUNDLE_MAPPING_INFO> 
<DAILY_BUNDLE_MAPPING_INFO> <SPEND_LIMIT_1_MIN>2.00</SPEND_LIMIT_1_MIN> <SPEND_LIMIT_1_MAX>2.49</SPEND_LIMIT_1_MAX> <UC_ID>143</UC_ID> <UT_ID>143005</UT_ID> </DAILY_BUNDLE_MAPPING_INFO> 
<DAILY_BUNDLE_MAPPING_INFO> <SPEND_LIMIT_1_MIN>2.50</SPEND_LIMIT_1_MIN> <SPEND_LIMIT_1_MAX>2.99</SPEND_LIMIT_1_MAX> <UC_ID>143</UC_ID> <UT_ID>143006</UT_ID> </DAILY_BUNDLE_MAPPING_INFO> 
<DAILY_BUNDLE_MAPPING_INFO> <SPEND_LIMIT_1_MIN>3.00</SPEND_LIMIT_1_MIN> <SPEND_LIMIT_1_MAX>3.49</SPEND_LIMIT_1_MAX> <UC_ID>143</UC_ID> <UT_ID>143007</UT_ID> </DAILY_BUNDLE_MAPPING_INFO> 
<DAILY_BUNDLE_MAPPING_INFO> <SPEND_LIMIT_1_MIN>3.50</SPEND_LIMIT_1_MIN> <SPEND_LIMIT_1_MAX>3.99</SPEND_LIMIT_1_MAX> <UC_ID>143</UC_ID> <UT_ID>143008</UT_ID> </DAILY_BUNDLE_MAPPING_INFO> 
<DAILY_BUNDLE_MAPPING_INFO> <SPEND_LIMIT_1_MIN>4.00</SPEND_LIMIT_1_MIN> <SPEND_LIMIT_1_MAX>4.49</SPEND_LIMIT_1_MAX> <UC_ID>143</UC_ID> <UT_ID>143009</UT_ID> </DAILY_BUNDLE_MAPPING_INFO> 
<DAILY_BUNDLE_MAPPING_INFO> <SPEND_LIMIT_1_MIN>4.50</SPEND_LIMIT_1_MIN> <SPEND_LIMIT_1_MAX>4.99</SPEND_LIMIT_1_MAX> <UC_ID>143</UC_ID> <UT_ID>143010</UT_ID> </DAILY_BUNDLE_MAPPING_INFO> 
</DAILY_BUNDLE_MAPPING_LIST> 

私は、XMLファイル 'daily_bundles_mapping.xml' に次のような構成を持つ

を説明しましょう

指定されたspend_limit_valueに対して、xsltクエリはUT_ID値を返しません

<xsl:variable name="GET_UC_ID_1_VALUE" value="1.23"/> 

<xsl:variable name="UT_ID" select="$docDailyBundleMappingFile/DAILY_BUNDLE_MAPPING_LIST/DAILY_BUNDLE_MAPPING_INFO[min(../DAILY_BUNDLE_MAPPING_INFO/SPEND_LIMIT_1_MIN/text()) >= $GET_UC_ID_1_VALUE and max(../DAILY_BUNDLE_MAPPING_INFO/SPEND_LIMIT_1_MAX) &lt;= $GET_UC_ID_1_VALUE and UC_ID = 143]/UT_ID/text()"/> 

助けてください/提案してください。私が探していた何

、「GET_UC_ID_1_VALUE」に基づいて、番号の範囲は、XML要素の間で識別される必要がフェッチする必要が与えられUC_IDとut_idを値で& SPEND_LIMIT_1_MAXをSPEND_LIMIT_1_MIN。

+0

を選択するかのように私には見えますので、入力XMLのどの要素(複数可)を使用すると、その変数の値が '1.23'であれば選択したいですか?最小限の「1」が「1.23」未満であり、最大「1.49」が≧ –

+0

1.23が1&1.49の範囲内にあるため、UT_ID値143001を選択する必要があります。これを質問に入れないと申し訳ありません。 – Hari

答えて

1

それはあなたが単に

$docDailyBundleMappingFile/DAILY_BUNDLE_MAPPING_LIST/DAILY_BUNDLE_MAPPING_INFO[SPEND_LIMIT_1_MIN &lt;= $GET_UC_ID_1_VALUE and $GET_UC_ID_1_VALUE &lt;= SPEND_LIMIT_1_MAX and UC_ID = 143]/UT_ID 
+0

修正プログラムを使用しています。どうもありがとう – Hari

関連する問題