如何使用XSL根据节点中的文本选择值?

时间:2018-07-27 03:55:47

标签: xml xslt

我有以下代码段:

<span>
<
<span class="start-tag">meta</span>
<span class="attribute-name">name</span>
="
<a class="attribute-value">Creator</a>
" 
<span class="attribute-name">content</span>
="
<a class="attribute-value">John Doe</a>
" 
<span>/</span>
>
</span>

在找到文本中包含“创建者”的“属性值”节点后,我尝试使用XSLT选择“属性值”节点的值。有什么想法可以做到吗?最终,我想要类似的东西

<content name="Creator">John Doe</content>

1 个答案:

答案 0 :(得分:0)

是的,您可能正在寻找这样的Xpath:

<span class="ml-1" data-bind="text:object.property1">10</span>

a[@class='attribute-value' and .='Creator']/following-sibling::a[@class='attribute-value'][1]在选择“创建者” a[@class='attribute-value' and .='Creator']节点的地方。

然后a将选择其以下与following-sibling::a[@class='attribute-value'][1]的兄弟姐妹,并仅保留第一个兄弟姐妹。

但是,正如注释中所述,您的示例不是有效的xml。普通的“ <”应转义(通常使用<)。您的预期结果应该更明确,这是您的整个输入文件吗?您想达到什么目的(您给出了预期的结果,但真正的需求可能不是唯一的节点)?

尽管如此,给定的XPath应该可以完成这项工作,并将根据您的示例选择预期的节点。但是由于您的问题缺少细节,因此请注意,根据输入的复杂性,使用的不同谓词可能需要一些改进。