2017-07-31 68 views
0

我想使用Xpath和XSLT獲取XML節點的值。下面是輸入XML和我的XSLT代碼。如果命名空間爲前綴,如何獲取xml節點的值

下面是請求XML:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:nat="http://schemas.datacontract.org/2004/07/xyz.DigitalBanking.Service.Token" xmlns:urn="urn:xyz:ASML:2.0:assertion"> 
     <soapenv:Header/> 
     <soapenv:Body> 
      <nat:GetAdfsSAMLFromASML> 

      <nat:request> 

      <nat:applicationType>secure_inbox</nat:applicationType> 
       <nat:department>Internet_Bank</nat:department> 
       <nat:firstName>quae divum incedo</nat:firstName> 
       <nat:lastName>verrantque per auras</nat:lastName> 
       <nat:title>per auras</nat:title> 
       <nat:emailaddress>[email protected]</nat:emailaddress> 
       <nat:mejrgeOnAttribute>[email protected]</nat:mejrgeOnAttribute> 
       <nat:ExistingASMLToken> 

    </nat:ExistingASMLToken> 
      </nat:request> 
      </nat:GetAdfsSAMLFromASML> 
     </soapenv:Body> 
    </soapenv:Envelope> 

下面是XSL代碼:

<?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0" 
     xmlns:xalan="http://xml.apache.org/xalan" 
     xmlns:pbdp="http://datapower.common.stp.pbds.pbit.jpmc.com" 
     xmlns:dpconfig="http://www.datapower.com/param/config" 
     xmlns:nw="http://www.datapower.com/extensions/functions" 
     xmlns:date="http://exslt.org/dates-and-times" 
     xmlns:func="http://exslt.org/functions" 
     xmlns:nat="http://schemas.datacontract.org/2004/07/xyz.DigitalBanking.Service.Token"  

     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     > 

     --> 



     <xsl:template match="/"> 

      <xsl:variable name="c">'</xsl:variable> 


      <xsl:variable name="applicationType" select="string(//*[local-name()='nat:GetAdfsSAMLFromASML']/@*[local-name()='nat:request']/@*[local-name() 

    ='nat:applicationType'])"/> 
        <xsl:value-of-select= "$applicationType"/> 


     </xsl:template> 
    </xsl:stylesheet> 

我想獲取的<nat:applicationType>值。即輸出應該是secure_inbox

我試着用上面的xslt,但沒有得到所需的輸出。

+0

請不要改變你的問題就已經經過回答 - 在必要時發佈一個新的。 –

+0

這裏發生了什麼?你爲什麼一直在編輯這個問題?你想問一個新問題嗎? –

回答

1

以下樣式:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:nat="http://schemas.datacontract.org/2004/07/xyz.DigitalBanking.Service.Token" 
exclude-result-prefixes="soapenv nat"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

<xsl:template match="/"> 
    <result> 
     <xsl:value-of select="/soapenv:Envelope/soapenv:Body/nat:GetAdfsSAMLFromASML/nat:request/nat:applicationType"/> 
    </result> 
</xsl:template> 

</xsl:stylesheet> 

當應用到你的輸入例如,將返回:

<?xml version="1.0" encoding="UTF-8"?> 
<result>secure_inbox</result> 
相關問題