2016-12-12 4 views
0

以下は、xmlにはどのような場合でも動的要素があります。しかし、このインスタンスの場合、コピーを作成するフィールドは、名前インスタンス 'ser'を含めることなく 'getClassName'です。参考までに変換のためにxml 1.0とXSLTを使用しています。名前空間のない動的XMLノードをコピーするにはどうすればいいですか?

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://sample.com/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <ser:getClassNames> 
      <credential> 
       <appUserID>d</appUserID> 
       <clientName>ECSDEVTEAM</clientName> 
       <repoName>HWY</repoName> 
      </credential> 
     </ser:getClassNames> 
    </soapenv:Body> 
</soapenv:Envelope> 

サンプル出力

<OperationName>getClassName</OperationName> 
+0

質問が不明です。ノードを**コピー**したい場合、その名前空間と(XSLT 1.0では)スコープ内にあるすべての名前空間ノードを含めてそのままコピーされます。 –

+0

あなたの入力では、要素のローカル名は 'getClassNames'です。なぜ出力に特異な' getClassName'があるのですか? –

答えて

0

私はほとんどここに推測していますが、次のスタイルシート適用:あなたの入力に

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/" 
exclude-result-prefixes="soapenv"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

<xsl:template match="/soapenv:Envelope "> 
    <OperationName> 
     <xsl:value-of select="local-name(soapenv:Body/*)"/> 
    </OperationName> 
</xsl:template> 

</xsl:stylesheet> 

は戻ります:

<?xml version="1.0" encoding="UTF-8"?> 
<OperationName>getClassNames</OperationName> 
+0

ありがとうミカエル!それが私が必要なものすべてです。混乱して申し訳ありません – Abdulkadir

+0

私はこれをDataPower Xi52で実装しようとしていましたが、いくつかの未知の理由のために動作しません。 – Abdulkadir

関連する問題