我正在尝试创建一个流程,该流程将检查生产中我们在XML Schema中所做的更改是否已部署。这些文件保存在Oracle DB中,因此我考虑使用XMLTYPE.extract ....
问题是xpath在解析模式时遇到了问题。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="TRB_TRX">
<xs:complexType>
<xs:sequence>
<xs:element name="HEADER">
<xs:complexType>
<xs:attribute name="ReqNotf" type="xs:string" use="optional" default="N"/>
SELECT XMLTYPE(COLUMN).EXTRACT('//xs:attribute[@name="ReqNotf"]/@type').getStringVal()
From .....
答案 0 :(得分:0)
尝试类似
的内容 EXTRACT(col,'//xs:attribute[@name="ReqNotf"]/@type',
'xmlns:xs="http://www.w3.org/2001/XMLSchema"').getStringVal() as val
实施例
SELECT EXTRACT(col,'//xs:attribute[@name="ReqNotf"]/@type', 'xmlns:xs="http://www.w3.org/2001/XMLSchema"').getStringVal() as val
From (
select
XMLTYPE('<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="TRB_TRX">
<xs:complexType>
<xs:sequence>
<xs:element name="HEADER">
<xs:complexType>
<xs:attribute name="ReqNotf" type="xs:string" use="optional" default="N"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>') as COL from dual
);
VAL
-------------
xs:string
请勿使用COLUMN
作为其保留的列名。
另外考虑使用XMLTABLE - EXTRACT是deprecated。