Cómo concatenar el valor de una variable a un xpath en XSLT.
Tengo un requisito para obtener los valores concatenando el valor de una variable al xpath.
Aquí está mi archivo XML.
<ns1:productSpecificationComponent>
<ns1:name>ABC</ns1:name>
<ns1:numberInParent>1</ns1:numberInParent>
</ns1:productSpecificationComponent>
<ns1:productSpecificationComponent>
<ns1:name>DEF</ns1:name>
<ns1:numberInParent>1</ns1:numberInParent>
</ns1:productSpecificationComponent>
.
.
.
<ns1:specificationSectionDetail>
<ns1:name>ABC</ns1:name>
<ns1:mainProductTitle>
<![CDATA[ABC]]>
</ns1:mainProductTitle>
</ns1:specificationSectionDetail>.
.
.
<ns1:specificationSectionDetail>
<ns1:name>DEF</ns1:name>
<ns1:mainProductTitle>
<![CDATA[DEF]]>
</ns1:mainProductTitle>
</ns1:specificationSectionDetail>
Estoy intentando iterar a través de cada una de las componentes de especificación del producto y obtener el valor del elemento
Usando el valor de la variable, necesito encontrar el valor de
Mi archivo XSL se ve así:
<xsl:for-each select="/ns1:productSpecificationFullDTO/ns1:productSpecificationComponent/ns1:parent[text() != 'true']/../ns1:name[text() != 'Parent']/..">
<xsl:variable name="subItem" select="ns1:name/text()"/>
<Item>
<LongDescription>
<xsl:value-of select="concat('ns1:productSpecificationFullDTO/ns1:specificationSectionDetail/ns1:name[text() = ''' , $subItem , ''']../ns1:specificationSectionFoodOtherLabellingCopySection/ns1:mainProductTitle/text()')"/>
</LongDescription>
</Item>
La salida que obtengo no es la esperada, ya que solo devuelve el nombre de la ruta y no el valor.
<Item>
<LongDescription>ns1:productSpecificationFullDTO/ns1:specificationSectionDetail/ns1:name[text() = 'ABC']/ns1:specificationSectionFoodOtherLabellingCopySection/ns1:mainProductTitle/text()
</LongDescription>
davy.ai
Para obtener el valor concatenando el valor de una variable al XPath, puede modificar su archivo XSL de la siguiente manera:
Aquí, puede usar la variable
$subItem
para filtrar el elementons1:name
en la expresión XPath dentro del elementovalue-of
. Además, utilice la ruta absoluta (comenzando desde el elemento raíz) para referirse al elementons1:specificationSectionDetail
. Esto debería darle el resultado deseado.