Xml XPath:如何选择属性值等于另一个元素值的元素
我有以下xml,并尝试查找其中的所有链接关系: (xml片段)Xml XPath:如何选择属性值等于另一个元素值的元素,xml,xslt,xpath,Xml,Xslt,Xpath,我有以下xml,并尝试查找其中的所有链接关系: (xml片段) 安装驱动程序 ... 安装驱动程序 我不能只比较属性值字符串,因为我不能确定它们。所以我需要一个通用的XPath表达式。我想要其nodeid与相应的link元素匹配的标题文本 我尝试了以下方法: <xsl:value-of select="heading[@nodeid = //link/@linktotargetid]"/> 您能否提供有关问题发生位置的更多信息?您的XPath看起来是正确的,我刚刚用XSLT创建了
安装驱动程序
...
安装驱动程序
我不能只比较属性值字符串,因为我不能确定它们。所以我需要一个通用的XPath表达式。我想要其nodeid与相应的link元素匹配的标题文本
我尝试了以下方法:
<xsl:value-of select="heading[@nodeid = //link/@linktotargetid]"/>
您能否提供有关问题发生位置的更多信息?您的XPath看起来是正确的,我刚刚用XSLT创建了一个
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" doctype-public="XSLT-compat"
omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:value-of select="heading[@nodeid = //link/@linktotargetid]"/>
</xsl:template>
</xsl:stylesheet>
对于示例输入XML
<root>
<heading nodeid="LINK_installing_driver">Installing the driver</heading>
<link linktotargetid="LINK_installing_not_driver">Not Installing the driver</link>
<link linktotargetid="LINK_installing_driver">Installing the driver</link>
</root>
安装驱动程序
没有安装驱动程序
安装驱动程序
将显示正确的标题:
安装驱动程序
您的问题缺乏上下文。通常,最好使用键从XML文档的另一个分支查找数据
例如,如果在样式表的顶层定义以下键:
<xsl:key name="head" match="heading" use="@nodeid" />
伟大的工作起来很有魅力!对不起,没有上下文
<xsl:key name="head" match="heading" use="@nodeid" />
<xsl:template match="link">
...
<xsl:value-of select="key('head', @linktotargetid)" />
...
</xsl:template>