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