Xpath local-name()函数检索特定的Node元素值

时间:2020-08-19 08:31:30

标签: xml xslt xpath local-name

我的输入XML如下所示

    <?xml version="1.0" encoding="UTF-8"?>
<Transaction-315 xmlns="urn:oracle:b2b:X12/V4010/315" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" XDataVersion="2.0" Standard="X12" Version="V4010" CreatedDate="2020-08-19T02:10:41" CreatedBy="XEngine_4016" GUID="{B5D92E00-E1E2-11EA-B316-02001707181F}">
    <Segment-N9>
        <Element-128>AB</Element-128>
        <Element-127>AMAZON</Element-127>
    </Segment-N9>
    <Segment-N9>
        <Element-128>BC</Element-128>
        <Element-127>65036834</Element-127>
    </Segment-N9>
    <Segment-N9>
        <Element-128>CD</Element-128>
        <Element-127>AMAZON200746994</Element-127>
    </Segment-N9>
</Transaction-315>

我想始终检索值 65036834 。从上面的示例中,Element-128值始终为常数。因此,我尝试使用local-name()函数检索Segment-N9节点Element-128 ='BC'/ text()。

/*[local-name()='Transaction-315']/Segment-N9[Element-128='BC']/*[local-name()='Element-127']/text()  

但是输出未给出例外值。您能帮我个忙吗?

1 个答案:

答案 0 :(得分:0)

Root元素中有名称空间,因此必须使用相同的名称空间或本地名称调用所有子对象

使用此

<xsl:value-of select="*[local-name()='Transaction-315']/*[local-name() = 'Segment-N9'][*[local-name() = 'Element-128']='BC']/*[local-name()='Element-127']/text()"/>

请参见https://xsltfiddle.liberty-development.net/naZYrq6

相关问题