努力将XMLclob数据转换为ACORD AL3格式

时间:2015-09-14 22:00:36

标签: xml oracle xslt plsql xsd

任何人都帮我这个,我正在努力将XMLclob数据转换为ACORD AL3格式,我正在使用oracle 11g和pl / sql开发工具,我的XML在表列中,我需要编写一个用于转换XML的包格式为AL3格式,结果AL3插入到不同列的xml同一个表中,如果您知道任何想法请发布任何更新或转换过程的方式。提前谢谢你的回复。

1 个答案:

答案 0 :(得分:1)

我对AL3一无所知,但由于您声明原始版本是包含XML数据的CLOB,因此您可以尝试使用基于XML的功能。特别是XSLT(可扩展的Sylesheet语言)功能。您需要创建一个样式表,将当前XML元素映射到AL3格式。

作为基本大纲,您可以从表中选择XML数据到XMLType变量中。定义另一个XMLType变量以包含XLST转换模板,然后将转换应用于XML,将结果保存在另一个XMLType变量中。然后,您可以根据需要将XML作为XMLType或clob返回:

declare
 l_xml xmltype;
 l_xslt xmltype;
 l_result xmltype;
begin
  l_xml := xmltype(q'[<root><value name="goober">some stuff</value></root>]');
  --select xmltype(clob_col) into l_xml from your_table where some_id=some_value;

  l_xslt := xmltype(q'[<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
    <!-- IdentityTransform -->
    <xsl:template match="node()|@*|/">
      <xsl:copy>
           <xsl:apply-templates select="node()|@*" />
      </xsl:copy>
    </xsl:template>
</xsl:stylesheet>]');
  l_result := l_xml.transform(l_xslt);
  dbms_output.put_line(l_result.getclobval());
end;
/

此处的示例样式表是一个简单的标识转换,它只是将初始XML复制为结果。开始时不是很有趣,但您可以根据需要添加更多特定模板来转换源XML。