Oracle Service Bus 10gR3에서 XSLT 변환을 실행하면 출력 XML이 표준 XSLT 프로세서를 사용하여 나타나는 방식과 다르게 나타납니다.OSB에서 네임 스페이스 수정을위한 XSLT - 네임 스페이스 접두어가 이상 함
입력 XML :
<given xmlns="http://www.sample.co.uk/version/6">
<child>content here</child>
</given>
XSLT :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*" >
<xsl:element name="{local-name()}" namespace="{concat(substring-before(namespace-uri(), '/6'),'/7')}" >
<xsl:apply-templates />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
출력 XML : 당신이 볼 수 있듯이
<ns1537:given xmlns:ns1537="http://www.sample.co.uk/version/7">
<ns1538:child xmlns:ns1538="http://www.sample.co.uk/version/7">content here</ns1538:child>
</ns1537:given>
는 각 노드가 다른 증분 접두사를 할당되고있다? 또한 네임 스페이스 속성이 각기 다른 노드에 포함되어 있습니까? 출력 XML은 다음과 같을 것입니다 :
<given xmlns="http://www.sample.co.uk/version/7">
<child>content here</child>
</given>
왜 OSB의 XSLT 프로세서가 표시된대로 출력을 생성하는지 설명 할 수 있습니까? 네임 스페이스 접두어 등을 사용하여 예상되는 출력을 얻으려면 어떻게해야합니까?
미리 감사드립니다. PM.
여기 내 생각에 접두사 자체가 번역과 독립적이지 않습니까? 지저분하지만 OSB는 수백 또는 수천 개의 다른 서비스에 대한 프록시 서비스이므로 OSB의 여러 구성 요소에서 XSLT를 혼합하고 일치 시키면 일부 네임 스페이스 접두어가없는 경우 조금 걱정하지 않겠습니까? 혼란을 막기 위해? –
안녕하세요 @ 닉 클 라우 어, 귀하의 의견에 감사드립니다. OSB의 xsl 프로세서가 메시지의 각 노드에 대해 다른 네임 스페이스 접두어를 생성하는 방식이 모든 노드가 동일한 네임 스페이스에 속한다고 생각하면 조금 이상합니다. 그럼에도 불구하고 아무런 문제도 발생하지 않지만 그럼에도 불구하고 조금 이상한 것으로 판명되었습니다. 다시 한 번 감사드립니다. –