[英]XSLT for namespace modify in OSB - namespace prefix oddity?
在Oracle Service Bus 10gR3中运行XSLT转换时,输出XML的显示方式与使用标准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,提前谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.