2017-12-21 5 views
-1

여러 블로그에서 제안 된 몇 가지 옵션을 시도했지만 다음 변환이 가능한지 알고 싶습니다.SOAP 봉투를 추가하고 SOAP 헤더와 본문간에 XML을 분할하는 데 XSLT 변환이 필요합니다.

나는 내가 SOAP 봉투를 추가해야하고 헤더와 본문에서 필드를 분할, 그래서 기본적으로

<?xml version="1.0" encoding="UTF-8"?> 
<ns1:ReturnLicensesForHost xmlns:ns1="http://example.com"> 
    <ns1:userName>ABCDEFGH</ns1:userName> 
    <ns1:password>1234567</ns1:password> 
    <ns1:hostIdType>XYZ</ns1:hostIdType> 
    <ns1:hostId>987654</ns1:hostId> 
    <ns1:product>STUV</ns1:product> 
</ns1:ReturnLicensesForHost> 

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:fs="http://example.com"> 
    <soap:Header> 
     <fs:Credentials> 
     <fs:userName>ABCDEFGH</fs:userName> 
     <fs:password>1234567</fs:password> 
     </fs:Credentials> 
    </soap:Header> 
    <soap:Body> 
     <fs:ReturnLicensesForHost> 
     <fs:hostIdType>XYZ</fs:hostIdType> 
     <fs:hostId>987654</fs:hostId> 
     <fs:product>STUV</fs:product> 
     </fs:ReturnLicensesForHost> 
    </soap:Body> 
</soap:Envelope> 

로, 다음과 같은 XML을 변환해야합니다.
이 변환을 위해 XSLT에 도움을 요청하십시오.

전환이 단순히 (네임 스페이스 관리 등), 입력 XML을 참조 xsl:value-of 구로 원하는 값을 주형에 결과 XML 퍼팅 대체 구성
+0

지금까지 해보신 것은 무엇입니까? – zx485

+0

나는 특정 블로그를 통해 비누 머리글을 추가하려고했습니다. SOAP 헤더에 XML 태그의 변수를 추가하는 통찰력을 제공하는 블로그가 있지만 XML 필드가 필요합니다. – Pauli

+0

[SO QnA] (https://stackoverflow.com/search?q=%5Bxslt%)를 보았습니까? 5D + 비누)? – zx485

답변

1

:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns1="http://example.com"> 
<xsl:output method="xml" indent="yes" />  

    <xsl:template match="/ns1:ReturnLicensesForHost"> 
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:fs="http://example.com"> 
     <soap:Header> 
      <fs:Credentials> 
       <fs:userName><xsl:value-of select="ns1:userName" /></fs:userName> 
       <fs:password><xsl:value-of select="ns1:password" /></fs:password> 
      </fs:Credentials> 
     </soap:Header> 
     <soap:Body> 
      <fs:ReturnLicensesForHost> 
       <fs:hostIdType><xsl:value-of select="ns1:hostIdType" /></fs:hostIdType> 
       <fs:hostId><xsl:value-of select="ns1:hostId" /></fs:hostId> 
       <fs:product><xsl:value-of select="ns1:product" /></fs:product> 
      </fs:ReturnLicensesForHost> 
     </soap:Body> 
    </soap:Envelope> 
    </xsl:template> 

</xsl:stylesheet> 

출력 :

<?xml version="1.0"?> 
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:fs="http://example.com" xmlns:ns1="http://example.com"> 
    <soap:Header> 
     <fs:Credentials> 
      <fs:userName>ABCDEFGH</fs:userName> 
      <fs:password>1234567</fs:password> 
     </fs:Credentials> 
    </soap:Header> 
    <soap:Body> 
     <fs:ReturnLicensesForHost> 
      <fs:hostIdType>XYZ</fs:hostIdType> 
      <fs:hostId>987654</fs:hostId> 
      <fs:product>STUV</fs:product> 
     </fs:ReturnLicensesForHost> 
    </soap:Body> 
</soap:Envelope> 
+0

나는 비슷한 접근법을 시도했다. 하지만 출력은 으로 표시됩니까? ABCDEFGH1234567XYZ987654STUV SOAP 봉투를 가져올 수 없습니다. Pls. 무시하십시오. 네임 스페이스의 실제 URL을 사용해야하고 이제는 비누 봉투가 생깁니다. – Pauli

+0

''의 값은 무엇입니까? 'text'라면이 긴 문자열을 얻을 것이지만'xml'이라면 전체 출력을 얻어야합니다. 나는 그에 따라 나의 대답을 바꾸었다. – zx485

관련 문제