2015-06-30 31 views
0

我想轉換此SOAP響應簡單的HTML:變換SOAP到HTML使用XSLT

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
     <Players xmlns="http://ws.wso2.org/dataservice"> 
     <Player> 
      <name>ATP</name> 
      <ranking>1</ranking> 
      <first_name>Novak</first_name> 
      <last_name>Djokovic</last_name> 
      <country>RS</country> 
      <email>[email protected]</email> 
     </Player> 
     <Player> 
      <name>ATP</name> 
      <ranking>2</ranking> 
      <first_name>Andy</first_name> 
      <last_name>Murray</last_name> 
      <country>GB</country> 
      <email>[email protected]</email> 
     </Player> 
     <Player> 
      <name>ATP</name> 
      <ranking>3</ranking> 
      <first_name>Viktor</first_name> 
      <last_name>Troicki</last_name> 
      <country>US</country> 
      <email>[email protected]</email> 
     </Player> 
     </Players> 
    </soapenv:Body> 
</soapenv:Envelope> 

這是我的XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:p="http://ws.wso2.org/dataservice" 
exclude-result-prefixes="p"> 
<xsl:template match="/"> 
    <html> 
    <body> 
    <h2>PLAYER RANKINGS</h2> 
    <table border="1"> 
     <tr bgcolor="#9acd32"> 
     <th style="text-align:left">Ranking</th> 
     <th style="text-align:left">First Name</th> 
     <th style="text-align:left">Last Name</th> 
     <th style="text-align:left">Country</th> 
     </tr> 
     <xsl:for-each select="//p:Players/Player"> 
     <tr> 
     <td><xsl:value-of select="p:ranking"/></td> 
     <td><xsl:value-of select="p:first_name"/></td> 
     <td><xsl:value-of select="p:last_name"/></td> 
     <td><xsl:value-of select="p:country"/></td> 
     </tr> 
     </xsl:for-each> 
    </table> 
    </body> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 

我 「玩」 這個簡單任務很長時間,但無法使其與for-loop中的選擇表達式匹配。

我嘗試使用和不使用命名空間,但沒有運氣。

回答

1

您錯過了一個命名空間。嘗試

<xsl:for-each select="//p:Players/p:Player">