我试图根据子元素值
获取父节点我想做类似获取TransactionDetail元素的地方,其中SequenceNumber = 2
我试着这样做,但我错过了一些东西......
ancestor:://*[local-name()='SequenceNumber'][text()=2]
//TransactionDetail[//SequenceNumber = 2]
这是xml
<Root>
<biztalk_1>
<body>
<ActiveStore_SalesTransaction_1.70>
<TransactionDetail>
<SequenceNumber>2</SequenceNumber>
<TransactionDetailGroup>
<Item>
<ItemID>22</ItemID>
<NonMerchandiseFlag>1</NonMerchandiseFlag>
</Item>
</TransactionDetailGroup>
</TransactionDetail>
</ActiveStore_SalesTransaction_1.70>
</body>
</biztalk_1>
答案 0 :(得分:1)
试试这个:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Root">
<Root>
<xsl:copy-of select="descendant::*[name()='TransactionDetail']
[descendant::*[name()='SequenceNumber']='2']"/>
</Root>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:1)
使用name()
不是一个好习惯。而是使用xpath中的元素名称,如下所示:
//TransactionDetail[SequenceNumber = 2]
xpath会在整个文档中选择所有TransactionDetail
元素,其子元素SequenceNumber
的值为2
。
如果您希望TransactionDetail
与任何后代SequenceNumber
值2
,请使用:
//TransactionDetail[.//SequenceNumber = 2]
此处,.//SequenceNumber
确保仅检查当前TransactionDetail
的后代SequenceNumber
元素。