2017-02-10 14 views
0

以下の入力XMLでは、ns1ns2という接頭辞を取得しています。
出力では、名前空間ns1dhに、名前空間ns2skに置き換える必要があります。ある名前空間を別の名前空間に置き換える

誰でもこれを助けてください。

<?xml version="1.0" encoding="UTF-8" ?> 
<sh:sampleDocument schemaVersion="" creationDate=""xmlns:sh="htpp://sample1.com"> 
    <sampleHeader> 
     <ns1:sampledocumentheader xmlns:ns1="htpp://sample2.com"> 
      <ns1:HeaderVersion />     
      <ns1:ContactInformation> 
       <ns1:Contact />      
       <ns1:EmailAddress />      
       <ns1:FaxNumber />      
       <ns1:TelephoneNumber />      
       <ns1:ContactTypeIdentifier />      
      </ns1:ContactInformation> 
     </ns1:sampledocumentheader> 
    </sampleHeader> 
    <sampleBody> 
     <sampleList> 
      <sampleEvent> 
       <Time />      
       <action />      
       <ns2:sampleExtension xmlns:ns2="htpp://sample3.com"> 
        <ns2:Value />       
        <ns2:Number />       
       </ns2:sampleExtension> 
      </sampleEvent> 
     </sampleList> 
    </sampleBody> 
</sh:sampleDocument> 
+0

1.0は何それを行うことを目的でしょうか?接頭語はまったく意味を持たず、完全に任意であることができます。本当に重要なのは、それがバインドされているURIです。 –

+0

受信側アプリケーションでは、データを受け入れるためにこれらの接頭辞が必要です。私も彼らと議論しましたが、彼らはそれらの接頭辞が欲しいです。 –

+2

彼らはそれを正しく行うにはあまりにも怠惰であり、その結果、余分な作業が必要ですか? –

答えて

1

これを行う必要はありません。名前空間接頭辞の選択は完全に任意です。ターゲットアプリケーションで特定のプレフィックスを使用する必要がある場合は、XMLではなく修正が必要なターゲットアプリケーションです。

とにかく、試してみてください。

XSLT

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:ns1="htpp://sample2.com" 
xmlns:ns2="htpp://sample3.com" 
exclude-result-prefixes="ns1 ns2"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<!-- identity transform --> 
<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="ns1:*"> 
    <xsl:element name="dh:{local-name()}" namespace="{namespace-uri()}"> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:element> 
</xsl:template> 

<xsl:template match="ns2:*"> 
    <xsl:element name="sk:{local-name()}" namespace="{namespace-uri()}"> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:element> 
</xsl:template> 

</xsl:stylesheet> 
+0

ありがとうございます...うまくいきます... –

関連する問題