【问题标题】:XSLT Transformation Adding NameSpace Prefix Not Working On Oracle 10gXSLT 转换添加命名空间前缀在 Oracle 10g 上不起作用
【发布时间】:2021-08-26 06:56:06
【问题描述】:

我目前在 Oracle 10g (10.2.0.4.0) 上使用 XSLT 在 XML 上添加命名空间前缀时遇到以下问题。

    SELECT XMLTRANSFORM(XMLTYPE('<EMP xmlns:xsd="http://lgi/vitria/wil/xsd">
  <FIRST_NAME>680394-catv</FIRST_NAME>
  <LAST_NAME>1414145</LAST_NAME>
  <PHONE>0522222532</PHONE>
</EMP>
'),XMLTYPE('<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xsd="http://lgi/vitria/wil/xsd">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

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

  <xsl:template match="*" >
      <xsl:element name="xsd:{local-name()}">
          <xsl:apply-templates select="@* | node()"/>
      </xsl:element>
  </xsl:template>  
</xsl:stylesheet>')) from dual
    
    

**Expected Output:**
<xsd:EMP xmlns:ns0="http://test">
  <xsd:FIRST_NAME>680394-catv</xsd:FIRST_NAME>
  <xsd:LAST_NAME>1414145</xsd:LAST_NAME>
  <xsd:PHONE>0522222532</xsd:PHONE>
</xsd:EMP>

**Current Output :** 
<EMP>
<FIRST_NAME>680394-catv</FIRST_NAME>
<LAST_NAME>1414145</LAST_NAME>
<PHONE>0522222532</PHONE>
</EMP>

我检查了更高版本的 10g(10.2.0.5.0),它按预期工作。在 10g(10.2.0.4.0) 上进行这项工作的最佳解决方案是什么

【问题讨论】:

    标签: xml xslt oracle10g xslt-2.0 xslt-3.0


    【解决方案1】:

    如果应用到代码文件中的 XML 的代码中的转换产生的输出与您显示的完全相同(没有名称空间声明),那么您的 XSLT 引擎中很可能存在错误。你应该有一个看起来像你预期的结果,或者是这样的:

    <EMP xmlns="http://lgi/vitria/wil/xsd">
      <FIRST_NAME>680394-catv</FIRST_NAME>
      <LAST_NAME>1414145</LAST_NAME>
      <PHONE>0522222532</PHONE>
    </EMP>
    

    EMP 元素上使用默认命名空间声明,因此不需要命名空间前缀。

    您可能已经知道这一点,但我的示例输出(默认命名空间声明和无前缀)从 XML 角度来看与您的预期完全相同(命名空间绑定到 xsd 前缀)。

    您的转换使用 XSLT 1.0,因此 [xslt-2.0] 和 [xslt-3.0] 标记可能会误导寻找 2.0 或 3.0 特定答案的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多