2015-11-13 29 views
0

不工作。的Xpath在此基礎上螺紋在我正從SharePoint響應使用XSLT1.0

Previous Thread

響應

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> 
    <Body> 
     <SharepointResponse xmlns="http://test.com.services.generic"> 
      <Sharepoint_Response> 
       <CopyIntoItemsResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
        <CopyIntoItemsResult>0</CopyIntoItemsResult> 
        <Results> 
         <CopyResult ErrorCode="Success" DestinationUrl="http://archivelink.dev.test.com/enterprise"/> 
        </Results> 
       </CopyIntoItemsResponse> 
      </Sharepoint_Response> 
     </SharepointResponse> 
    </Body> 
</Envelope> 

我轉換到這一點的JSONx,我需要的<CopyIntoItemsResult>0</CopyIntoItemsResult>

< ErrorCode="Success" 

DestinationUrl="http://archivelink.dev.test.com/enterprise"/> 

下面是我使用的XPath 1)CopyIntoItemsResult<xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='SharepointResponse']/*[local-name()='Sharepoint_Response']/*[local-name()='CopyIntoItemsResponse']/*[local-name()='CopyIntoItemsResult']/text()"/>

2)錯誤碼/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='SharepointResponse']/*[local-name()='Sharepoint_Response']/*[local-name()='CopyIntoItemsResponse']/*[local-name()='Results']/*[local-name()='CopyResult']/@*[local-name()='ErrorCode']

3)DESTINATIONURL/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='SharepointResponse']/*[local-name()='Sharepoint_Response']/*[local-name()='CopyIntoItemsResponse']/*[local-name()='Results']/*[local-name()='CopyResult']/@*[local-name()='DestinationUrl']

是我沒有收到任何值的問題我無法弄清楚我在哪裏做錯了?

任何人都可以請幫忙。

回答

0

你真的不顯示您的XSLT,但它取決於你的模板匹配。如果你使用星號(*),你的XPath應該可以工作。或者,您可以在模板匹配中使用反斜槓(/),但可以在每個XPath開頭處刪除該反斜槓。

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:output version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no" /> 
<xsl:strip-space elements="*" /> 

<xsl:template match="*"> 
    <data>  
     <CopyIntoItemsResult> 
      <xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Body']/* 
        [local-name()='SharepointResponse']/*[local-name()='Sharepoint_Response']/* 
        [local-name()='CopyIntoItemsResponse']/* 
        [local-name()='CopyIntoItemsResult']/text()"/> 
     </CopyIntoItemsResult> 
     <ErrorCode> 
      <xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Body']/* 
        [local-name()='SharepointResponse']/*[local-name()='Sharepoint_Response']/* 
        [local-name()='CopyIntoItemsResponse']/*[local-name()='Results']/* 
        [local-name()='CopyResult']/@*[local-name()='ErrorCode']"/> 
     </ErrorCode> 
     <DestinationUrl>  
      <xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Body']/* 
        [local-name()='SharepointResponse']/*[local-name()='Sharepoint_Response']/* 
        [local-name()='CopyIntoItemsResponse']/*[local-name()='Results']/* 
        [local-name()='CopyResult']/@*[local-name()='DestinationUrl']"/> 
     </DestinationUrl> 
    </data> 
</xsl:template> 

</xsl:transform> 

輸出

<data> 
    <CopyIntoItemsResult>0</CopyIntoItemsResult> 
    <ErrorCode>Success</ErrorCode> 
    <DestinationUrl>http://archivelink.dev.test.com/enterprise</DestinationUrl> 
</data> 
+0

感謝您的提示。這兩個想法都有效。 –