首页 > 解决方案 > XSL:提取其他元素内容的值基

问题描述

我是 XSL 的新手……我不知道如何根据子元素的内容获取元素的内容。

XML 示例:

<main_caracs>
        <Label/>
        <Value>Essence, Hybride</Value>
    </main_caracs>
    <main_caracs>
        <Label/>
        <Value>Traction avant</Value>
    </main_caracs>
    <main_caracs>
        <Label>Consommation sur route</Label>
        <Value>8,4 litres aux 100 km</Value>
    </main_caracs>
    <main_caracs>
        <Label>Consommation en ville</Label>
        <Value>12,4 litres aux 100 km</Value>
    </main_caracs>

我需要提取 /main_caracs/Label/Value 的文本,但前提是它的内容是“Consommation en ville”。

我尝试各种选择,等等......但不是运气。如果有人可以给我一些提示,将不胜感激。

谢谢!

标签: xmlxslt

解决方案


您的 XML 中需要一个根元素。我只是称它为 x:

<x>
<main_caracs>
        <Label/>
        <Value>Essence, Hybride</Value>
    </main_caracs>
    <main_caracs>
        <Label/>
        <Value>Traction avant</Value>
    </main_caracs>
    <main_caracs>
        <Label>Consommation sur route</Label>
        <Value>8,4 litres aux 100 km</Value>
    </main_caracs>
    <main_caracs>
        <Label>Consommation en ville</Label>
        <Value>12,4 litres aux 100 km</Value>
    </main_caracs>
</x>

然后使用这个 XSL 进行转换:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/>
    
    <xsl:template match="/">
<!-- get the Value of the main_caracs that has a Label that = 'Consommation en ville' -->
        <xsl:value-of select="x/main_caracs[Label='Consommation en ville']/Value" />
    </xsl:template>
    
</xsl:stylesheet>

推荐阅读