2017-08-11 3 views
0

Ich möchte mit XSLT analysieren.XSLT-Transformation mit Werten in Namespaces

Meine XML:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:obtenerListaMisionesResponse xmlns:ns2="http://Servicios/"> 
     <return> 
      <codMisiones>1</codMisiones> 
      <correoMision>Foo</correoMision> 
      <nombreMision>Bar</nombreMision> 
     </return> 
     <return> 
      <codMisiones>2</codMisiones> 
      <correoMision>Foo 2</correoMision> 
      <nombreMision>Bar 2</nombreMision> 
     </return> 
     </ns2:obtenerListaMisionesResponse> 
    </S:Body> 
</S:Envelope> 

Dann habe ich versucht, diese mit Hilfe von XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="obtenerListaMisionesResponse"> 
     <xsl:for-each select="return"> 
      <xsl:value-of select="nombreMision"/> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

Aber ich habe diese Rückkehr:

1 Foo Bar 2 foo2 Bar2

Whe n Das möchte ich:

Bar Bar2

Ich denke, ist etwas, weil mein Namensraum im Inneren, aber ich verstehe nicht, was falsch ist.

Antwort

1

Sie sind korrekt, obtenerListaMisionesResponse ist nicht der gleiche Name wie ns2:obtenerListaMisionesResponse, daher entspricht Ihre Vorlage nicht.

Versuchen Sie, ns2:obtenerListaMisionesResponse stattdessen zu entsprechen, und schließen Sie die xmlns:ns2=.. Deklaration in Ihrem XSLT-Stammelement ein.

+0

Sie haben Recht! Es klappt –