0

兄弟要素データに基づいて要素の値を見つけるための正しい構文を見つけるのに苦労しています。

次の XML があるとします。

<files>
    <file>
        <location>location1.txt</location>
        <metadata>
            <foo>some value 1</foo>
        </metadata>
    </file>
    <file>
        <location>location2.txt</location>
        <metadata>
            <foo>some value 2</foo>
        </metadata>
    </file>
    <file>
        <location>location3.txt</location>
        <metadata />
    </file>
</files>

file/metadata/foo = "some value 2" の場所のみを探している場合、正しい場所の値を見つけるための正しい XPATH 式は何ですか? 兄弟またはその兄弟の子供のデータに依存している場合、それを見つけるための正しい構文を見つけることができないようです。

xslt を使用してファイル要素を反復処理し、その方法で適切な値を見つけるソリューションを見つけましたが、あまりエレガントではありません。

<xsl:variable name="profileAlias">
    <xsl:for-each select="files/file">
        <xsl:if test="metadata/foo='some value 2'">
            <xsl:value-of select="location">
        </xsl:if>   
    </xsl:for-each>
</xsl:variable>
4

2 に答える 2