2017-09-10 21 views
0

こんにちは、私はxmlに新しいです。私はnamespaces.Belowを削除するためにxsltを使用しています。入力コードです。私は何をしたいかxsltを使用して名前空間を削除

<ks6:newRequest xmlns:ks6="http://example.com/connector/ssw" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:ks3="com.newtech.kake.notification" 
xmlns:ks5="com.newtech.alert" xmlns:ks7="http://notification.newtech.com"> 
    <ks5:new book = "5073"> 
     <ks5:entityId>2314</ks5:entityId> 
     <ks5:entityName>newReq</ks5:entityName> 
    </ks5:new> 
    <ks3:new2> 
     <ks3:entityId>2315</ks3:entityId> 
     <ks3:entityName>newReq2</ks3:entityName> 
    </k3:new2> 
</ks6:newRequest> 

は、あまりにもそのURI、すなわちそののxmlnsと一緒に名前空間のKS6を削除し、代わりにKS6の名前空間KS5を使用することです。 ここで、私の出力がどのように見えるか。

<ks5:newRequest xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:ks3="com.newtech.kake.notification" 
    xmlns:ks5="com.newtech.alert" xmlns:ks7="http://notification.newtech.com"> 
     <ks5:new book = "5073"> 
      <ks5:entityId>2314</ks5:entityId> 
      <ks5:entityName>newReq</ks5:entityName> 
     </ks5:new> 
     <ks3:new2> 
      <ks3:entityId>2315</ks3:entityId> 
      <ks3:entityName>newReq2</ks3:entityName> 
     </k3:new2> 
    </ks5:newRequest> 

おかげで、

+0

どのXSLTプロセッサを使用していますか、何を試しましたか? –

+0

'xsl:element'は' namespace'引数をとり、xpathは 'local-name'などを持ちます。 – o11c

+0

私はeclipse neonまたはいつかのオンラインコンパイラを使用しています。私はxsltに関連した仕事をしていないので、最初と最後に誰かが助けてくれることを望んでいました。私は徹底的に検索しましたが、私が望むものを見つけることができませんでした。 –

答えて

0

はXSLTを使用すると、あなたが特定の名前空間内の要素の名前空間を変更したいあなたの場合のように、変換したいそれらのノードに一致するテンプレートを記述する必要がストリップにしたいですあなたが必要とする他の要素の名前空間

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 

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

    <xsl:template match="*"> 
     <xsl:element name="{name()}" namespace="{namespace-uri()}"> 
      <xsl:copy-of select="namespace::*[not(. = 'http://example.com/connector/ssw')]"/> 
      <xsl:apply-templates select="@* | node()"/> 
     </xsl:element> 
    </xsl:template> 

    <xsl:template match="ks6:*" xmlns:ks6="http://example.com/connector/ssw"> 
     <xsl:element name="ks5:{local-name()}" namespace="com.newtech.alert"> 
      <xsl:copy-of select="namespace::*[not(. = 'http://example.com/connector/ssw')]"/> 
      <xsl:apply-templates select="@* | node()"/> 
     </xsl:element> 
    </xsl:template> 

</xsl:stylesheet> 
関連する問題