努力将 XMLclob 数据转换为 ACORD AL3 格式
struggling with converting XMLclob data to ACORD AL3 format
任何人在下面帮助我,我正在努力将 XMLclob 数据转换为 ACORD AL3 格式,我正在使用带有 pl/sql 开发人员工具的 oracle 11g,我的 XML一个 table 列,我需要编写一个包将 XML 格式转换为 AL3 格式,结果 AL3 插入到不同列中 xml 的相同 table,如果你知道任何关于此的想法请 post 任何更新或转换过程的方式。提前感谢您的回复。
我对 AL3 一无所知,但由于您声明您的原始文件是包含 XML 数据的 CLOB,您可以尝试使用基于 XML 的功能。特别是 XSLT(EXtensible Sylesheet Language)特性。您需要创建一个样式 sheet 将当前 XML 元素映射到您的 AL3 格式。
作为基本大纲,您可以 select 来自 table 的 XML 数据到 XMLType 变量中。定义另一个 XMLType 变量以包含 XLST 转换模板,然后将转换应用于您的 XML,将结果保存在另一个 XMLType 变量中。然后,您可以根据需要 return 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;
/
此处的示例样式sheet 是一个简单的身份转换,它只是将初始 XML 复制为结果。开始时不是很有趣,但您可以根据需要添加更具体的模板来转换源 XML。
任何人在下面帮助我,我正在努力将 XMLclob 数据转换为 ACORD AL3 格式,我正在使用带有 pl/sql 开发人员工具的 oracle 11g,我的 XML一个 table 列,我需要编写一个包将 XML 格式转换为 AL3 格式,结果 AL3 插入到不同列中 xml 的相同 table,如果你知道任何关于此的想法请 post 任何更新或转换过程的方式。提前感谢您的回复。
我对 AL3 一无所知,但由于您声明您的原始文件是包含 XML 数据的 CLOB,您可以尝试使用基于 XML 的功能。特别是 XSLT(EXtensible Sylesheet Language)特性。您需要创建一个样式 sheet 将当前 XML 元素映射到您的 AL3 格式。
作为基本大纲,您可以 select 来自 table 的 XML 数据到 XMLType 变量中。定义另一个 XMLType 变量以包含 XLST 转换模板,然后将转换应用于您的 XML,将结果保存在另一个 XMLType 变量中。然后,您可以根据需要 return 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;
/
此处的示例样式sheet 是一个简单的身份转换,它只是将初始 XML 复制为结果。开始时不是很有趣,但您可以根据需要添加更具体的模板来转换源 XML。