在根据配置的数值范围获取xml节点值时发生XSLT查询问题

时间:2017-11-21 07:22:48

标签: xslt xslt-2.0

提前感谢您的支持。我在尝试根据数字范围获取值时遇到xpath查询问题。

让我解释一下

我在xml文件'daily_bundles_mapping.xml'

中有以下配置
<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>

以下两行将读取'daily_bundles_mapping.xml'文件

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

<xsl:variable name="docDailyBundleMappingFile" select="document($dailyBundleMappingFile)"/>

对于给定的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元素SPEND_LIMIT_1_MIN&amp;之间识别数字范围。需要获取具有给定UC_ID和UT_ID值的SPEND_LIMIT_1_MAX。

1 个答案:

答案 0 :(得分: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