2016-05-25 37 views
0

私はXMLメッセージのフォーマットをXMLメッセージの別のフォーマットに変更する必要があるという要件があります。ここでXML形式を別の形式に変換する方法は?

を変換する必要があります入力されている。

<soap:Envelope 
xmlns:wsdl="http://ee.co.uk/customer/wsdl" 
xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
> 
    <soap:Header> 
     <Ids> 
      <userId>11111</userId> 
      <responsibilityId>234433</responsibilityId> 
     </Ids> 
     <requestId>123435</requestId> 
     <Token>e34OahuMch0Pai0Nbhr0</Token> 
    </soap:Header> 
    <soap:Body> 
     <wsdl:getPersonslip> 
      <personId>34343</personId> 
     </wsdl:getPersonslip> 
    </soap:Body> 

</soap:Envelope> 

変換後、それは次のようになります。

<params> 
<param dataType="java.lang.int">11111</param> 
<param dataType="oracle.jbo.domain.Number">234433</param> 
<param dataType="java.lang.Date">34343</param> 
</params> 

どのように私は、この使用してXSLを達成することができますか?どこから始めるべきかわからない。もし誰でもそれに光をあてることができれば、本当に役に立つでしょう。

私は変換するために、ここで使用しているXSLは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:dp="http://www.datapower.com/extensions" 
extension-element-prefixes="dp"> 
<xsl:output method="xml" /> 
    <xsl:template match="/"> 

     <params> 
       <xsl:if test="/soap:Envelope/soap:Body/wsdl:getPersonslip/personId"> 
        <param dataType="java.lang.Date"> 
         <xsl:value-of select="/soap:Envelope/soap:Body/wsdl:getPersonslip/personId"/> 
        </param> 
       </xsl:if> 
     </params> 
</xsl:template> 


</xsl:stylesheet> 

しかし、それは正しく、それを印刷しているように思われません。

+0

** 1 **きっとあなたは1つのスタイルシートが両方の変換を行うことを期待していませんか? ** 2。**正確にこれに問題がありますか? –

+0

私は変換を行うことができる2つのスタイルシートが必要です。 – Sammy

+0

2つの質問を投稿してください。そして、それらが* questions *であることを確認してください - コードの要求ではありません。 –

答えて

0

soap:またはwsdl:のような接頭辞は、最初に宣言することなく使用できません。

試してみてください。

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:wsdl="http://ee.co.uk/customer/wsdl" 
xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
exclude-result-prefixes="wsdl soap"> 
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>  

<xsl:template match="/soap:Envelope"> 
    <params> 
     <param dataType="java.lang.int"> 
      <xsl:value-of select="soap:Header/Ids/userId"/> 
     </param> 
     <param dataType="oracle.jbo.domain.Number"> 
      <xsl:value-of select="soap:Header/Ids/responsibilityId"/> 
     </param> 
     <param dataType="java.lang.Date"> 
      <xsl:value-of select="soap:Body/wsdl:getPersonslip/personId"/> 
     </param> 
    </params> 
</xsl:template> 

</xsl:stylesheet> 
+0

私にプレフィックスを宣言する必要があることを知らせてくれてありがとう。あなたは素晴らしいです! – Sammy

関連する問題