2017-09-10 3 views
0

안녕하세요, 저는 xml에 익숙하지 않습니다. xslt를 사용하여 namespace를 제거했습니다. 아래는 입력 코드입니다. 내가 원하는 무엇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 버전을 사용하는 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> 
관련 문제