XSLT中如何获取data_type='3'的首个匹配节点的Ref值
问题背景
- 业务需求:从一批随机分布data_type属性(取值含0、2、3、4等)的元素中,获取*第一个data_type属性值为"3"*的元素对应的Ref值
- 原有写法问题:使用如下XPath查询时,会返回所有data_type='3'节点对应的Ref值,无法返回单个目标值
<xsl:value-of select="/process/TransactionType/data_xml/transaction/sub_documents/transactionLine[@data_type='3']/Ref"/>
修改方法
在筛选完data_type='3'的transactionLine节点集后增加位置谓词[1]即可(XPath语法中节点位置索引从1开始计数),修改后的正确语句:
<xsl:value-of select="/process/TransactionType/data_xml/transaction/sub_documents/transactionLine[@data_type='3'][1]/Ref"/>
注意:不要将
[1]错误添加到/Ref之后,该写法会取每一个匹配到的transactionLine节点下的第一个Ref子节点,只有当每个transactionLine下有且仅有一个Ref时才会巧合得到正确结果,逻辑上不符合取第一个符合属性要求的transactionLine对应值的需求。
内容的提问来源于stack exchange,提问作者HKmar
相关产品推荐
相关产品推荐

