attribute - xpath position
¿Cómo seleccionar dos atributos del mismo nodo con una expresión en XPath? (4)
¿Desea buscar nodos persona en función del valor de múltiples atributos? Si esa es la pregunta, entonces puedes simplemente usar ands, por ejemplo
//person[@id=''abc123'' and @haircolor=''blue'' and @weight=''...'']
Si desea buscar en un solo atributo, pero devolver los valores de los otros atributos, haría algo como esto:
<xsl:template match="person[@id=''abc123'']">
<xsl:value-of select="@haircolor"/>
<xsl:value-of select="@weight"/>
</xsl:template>
Por ejemplo:
//person[@id=''abc123'']/@haircolor|/@weight"
PD. hay muchos registros de "personas"
Muestra de 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
Prueba esto:
//person[@id=''abc123'']/@*[name()=''weight'' or name()=''haircolor'']
Si está usando un procesador XPath 2.0, también puede usar una opción más bonita:
//person[@id=''abc123'']/(@haircolor|@weight)`
Si está tratando de obtener los valores de los atributos especificados, le sugiero que introduzca una variable para la persona solicitada.
<xsl:variable name="person" select="//person[@id = ''abc123'']" />
Después de eso, puede obtener cualquier atributo de la persona solicitada utilizando la variable especificada.
<xsl:value-of select="$person/@haircolor" />
<xsl:value-of select="$person/@weight" />