下面是一个XML文件的两个部分。
我尝试匹配名为cutSeven的节点并选择其第一个子节点文本。
匹配路径未知,因此每个XML在不同位置都有类似的信息。
我正在处理多个XML,包括那些信息,我正在为它创建一个自动更新的概述。
输入XML
<Transform>
<param name="originalHeader">
<path>$header</path>
</param>
<param name="cutSeven">
<path>"fi.siikjin.exitorder.seasam.accesscontrol.k1"</path>
</param>
</Transform>
.
.
.
<Transform>
<param name="originalHeader">
<path>$header</path>
</param>
<param name="cutSeven">
<path>"fi.siikjin.exitorder.seasam.accesscontrol.k1.accesscontrol_k1.accesscontrol"</path>
</param>
</Transform>
我的表达
<xsl:value-of select="//@name[normalize-space(.) = 'cutSeven']/parent::*[1]"/>
带我到输出:
<path>"fi.siikjin.exitorder.seasam.sec.accesscontrol.k1"</path>
<path>"fi.siikjin.exitorder.seasam.sec.accesscontrol.k1.accesscontrol_k1.accesscontrol"</path>
预期:
<path>"fi.siikjin.exitorder.seasam.accesscontrol.k1"</path>
如何只选择第一个匹配的节点并忽略其他匹配?或者根据我的说法,只输出1个值。 谢谢你的建议!
答案 0 :(得分:2)
//*[@name = 'cutSeven']
选择具有name
属性值的所有元素,(//*[@name = 'cutSeven'])[1]
仅选择其中第一个元素。