例如:
//person[@id='abc123']/@haircolor|/@weight"
PS。有很多“人”记录
答案 0 :(得分:60)
试试这个:
//person[@id='abc123']/@*[name()='weight' or name()='haircolor']
如果您使用的是XPath 2.0处理器,您还可以使用更漂亮的选项:
//person[@id='abc123']/(@haircolor|@weight)`
答案 1 :(得分:23)
您是否希望根据多个属性的值搜索人员节点。如果这是问题,那么你可以使用ands例如。
//person[@id='abc123' and @haircolor='blue' and @weight='...']
如果你想搜索一个属性,但返回其他属性的值,我会这样做:
<xsl:template match="person[@id='abc123']">
<xsl:value-of select="@haircolor"/>
<xsl:value-of select="@weight"/>
</xsl:template>
答案 2 :(得分:2)
如果您尝试获取指定属性的值,我建议为所请求的人引入一个变量。
<xsl:variable name="person" select="//person[@id = 'abc123']" />
之后,您可以使用指定的变量从所请求的人那里获取任何属性。
<xsl:value-of select="$person/@haircolor" />
<xsl:value-of select="$person/@weight" />
答案 3 :(得分:0)
示例XML:
<X>
<Y ATTRIB1=attrib1_value ATTRIB2=attrib2_value/>
</X>
string xPath="/" + X + "/" + Y +
"[@" + ATTRIB1 + "='" + attrib1_value + "']" +
"[@" + ATTRIB2 + "='" + attrib2_value + "']"
XPath Testbed: http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm