摘要
將遺留應(yīng)用程序或集成系統(tǒng)與BEA WebLogic Workshop集成在一起時(shí),經(jīng)常要用到xml和模式。然而,某些遺留系統(tǒng)在最初設(shè)計(jì)時(shí)并沒有包括處理XML命名空間的功能。相反,這些遺留系統(tǒng)只接受不帶目標(biāo)命名空間的無(wú)格式XML消息,而這可能導(dǎo)致在WebLogic Workshop中出現(xiàn)沖突。事實(shí)上,可以在多個(gè)模式中定義名稱相同的全局類型或元素。
本文描述了如何通過WebLogic Workshop和XMLBeans簡(jiǎn)單而有效地解決這個(gè)問題。本文假定您對(duì)XML模式和XMLBeans有一些基本了解。您可以下載本文中使用的示例。
簡(jiǎn)介
XMLBeans提供了一種處理XML的方法,即操作代表XML的java類。這些類是使用XML適合的模式來創(chuàng)建的。可以使用XMLBeans來編譯一個(gè)或多個(gè)模式文件,從而生成Java類型。
集成遺留解決方案時(shí)碰到的一個(gè)常見問題是,要與不同來源的多個(gè)模式打交道,而這些模式均未帶有指定的目標(biāo)命名空間。假如這些模式共享元素名稱,WebLogic Workshop模式項(xiàng)目就無(wú)法成功編譯生成的Java類型,而且還會(huì)出現(xiàn)諸如“Duplicate global type”或“Duplicate global element”這樣的錯(cuò)誤。下面舉例說明這樣一個(gè)場(chǎng)景。
場(chǎng)景實(shí)例
假設(shè)您使用WebLogic Workshop創(chuàng)建了一個(gè)新的應(yīng)用程序。通常您會(huì)創(chuàng)建一個(gè)模式項(xiàng)目,導(dǎo)入您的模式,然后WebLogic Workshop將自動(dòng)把這個(gè)模式編譯為XMLBeans:
<xs:schema xmlns:po="http://openuri.org/easypo" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="purchase-order" type="customer"/> <xs:complexType name="customer"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="address" type="xs:string"/> </xs:sequence> </xs:complexType></xs:schema>
清單 1: Schema1.xsd
Schema1沒有目標(biāo)命名空間,所得到的XML文檔中帶有元素名稱name和address,如下所示:
<?xml version="1.0" encoding="UTF-8"?><purchase-order xmlns:po="http://openuri.org/easypo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <name>John</name> <address>123 North First St</address></purchase-order>
清單 2: Sample1.xml
假如您嘗試從這個(gè)模式生成Java類型,它將被正確地編譯為一個(gè)XMLBean。現(xiàn)在可以導(dǎo)入另一個(gè)模式:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:foo="http://openuri.org/clientdb" elementFormDefault="qualified"> <xs:element name="client-record" type="customer"/> <xs:complexType name="customer"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="address" type="xs:string"/> <xs:element name="phone" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="purchase-order" type="customer"/></xs:schema>
清單 3: Schema2.xsd
Schema2 同樣沒有目標(biāo)命名空間。下面的XML文檔就是這個(gè)模式的一個(gè)實(shí)例,它帶有元素名稱name, address和 phone:
<?xml version="1.0" encoding="UTF-8"?><client-record xmlns:foo="http://openuri.org/clientdb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <name>Susan</name> <address>6789 South Second St</address> <phone>408-123-4567</phone></client-record>
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注