Aplikace funguje nasledovne:
Pri startu si aplikace natahne vsechny XSD ze zadaneho adresare. Pak
potrebuju ke kazde XSD definici udelat validni XML message do ni
vlozit potrebne hodnoty a poslat na zadanou queue.
XSD definice ktere slouzi jako vstup jsou znacne omezene. Obsahuji jen
jeden ComplexType se sequenci elementu ruznych typu. Ale chapu ze
tohle je specialni pripad a obecne to jiste nelze..
Postup vyuziti xjc pro vygenerovani pomocnych trid neni podle me v mem
pripade vhodny.. Situace je velice podobna pripadu, kdyz by se XSD
menily za behu.
Je nejaky obecny postup sestavovani validnich XML message z dynamicky
se menicich XSD?
Dekuji za vase nazory.
XSD muze vypadat takto:
<?xml version="1.0" encoding="ibm852"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="L1_L2_CyclicDataRM">
<xs:annotation>
<xs:appinfo>
<Transport>EMS</Transport>
<MessageType>Queue</MessageType>
<MessageName>ems.topic.L1_L2_CyclicDataRM</MessageName>
<Timer>2000</Timer>
</xs:appinfo>
</xs:annotation>
<xs:sequence>
<xs:element name="Bucket__Brigade">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="ArrayOfString" type="xs:string">
<xs:annotation>
<xs:documentation>Bucket Brigade.ArrayOfString</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="UInt2" type="xs:unsignedShort">
<xs:annotation>
<xs:documentation>Bucket Brigade.UInt2</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Boolean" type="xs:boolean">
<xs:annotation>
<xs:documentation>Bucket Brigade.Boolean</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Int1" type="xs:string">
<xs:annotation>
<xs:documentation>Bucket Brigade.Int1</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Square__Waves">
<xs:complexType>
<xs:sequence>
<xs:element name="UInt1" type="xs:byte">
<xs:annotation>
<xs:documentation>Square Waves.UInt1</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Real8" type="xs:double">
<xs:annotation>
<xs:documentation>Square Waves.Real8</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Int2" type="xs:short">
<xs:annotation>
<xs:documentation>Square Waves.Int2</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
2011/4/19 Robert Novotny <[email protected]
<mailto:[email protected]>>
Vezmime si priklad zo slovenciny. Mam gramatiku, ktora hovori, ze
slovenska veta ma mat:
Podmet - prisudok - predmet.
Validacia sa pyta, ci veta ,,Pes zerie granule" splna gramatiku.
Vy vsak chcete riesit problem typu ,,potrebujem vyrobit slovensku
vetu". Ako ma kniznica vediet, ci ma vygenerovat slovensku vetu
,,Pes zerie granule" alebo ,,Vyvojar miluje Javu" alebo ,,Ja mam psa"?
Ako sa spominalo, JAXB na zaklade XSD vyrobi triedu s instancnymi
premennymi podmet, prisudok, predmet a anotaciami zaisti, ze
objekt sa serializuje spravne a teda ze vysledne XML bude splnat
schemu.
Ako nad tym uvazujem, tak bud chcete mat v kode obmedzene, aby ste
nevymysleli nahodou spravu, ktora nedava zmysel (,,Vonku prsi"),
lenze to vam zaisti prave typovy system, ktory je reprezentovany
prave triedami, ktore su vygenerovane v JAXB.
Vy hovorite, ze nechcete generovat ziadne triedy ,,ukladane na
filesystem", ale mne to nie je jasne. Typicky workflow znamena, ze
mam XSD, v kompilacnom kroku z neho vypadnu klasicke Java triedy a
tie pouzivam uplne rovnako ako akekolvek ine triedy. Alebo mate
situaciu, ked sa XSD meni za behu?
RN
On 19. 4. 2011 14:11, Vladislav Krejčiřík wrote:
ok, mozna jsem to spatne popsal. Zkusim znovu. Ja nechci nic
validovat, protoze nemam vlastne ani co. XSD mi definuje
strukturu nejake message. Ja bych potreboval takovou messge umet
vytvorit, "vygenerovat" z XSD definice. Myslel jsem ze bych
ziskal nejakou objektovou reprezentaci te XML message kde bych
nastrkal hodnoty co potrebuju. Potom bych uz jen XML message
poslal do fronty.
Nevim jestli existuje nejaka knihovna, ktera to umoznuje. Nebo
budu muset rucne takovou XML vystavet..
Dne 19. dubna 2011 12:48 Lukas "lzap" Zapletal
<[email protected] <mailto:[email protected]>> napsal(a):
Vlado,
myslim ze se tady snazis michat dve veci. DOM a XSD. Prvni
jmenovany slouzi
k manupulaci s (ted to zjednodusim) XML, druhy je urcen pro
popis a kontrolu
XML dokumentu. Krome jineho lze namapovat na JavaBeany a
ruzne jine
struktury zname z pocitacovych jazyku.
To co asi chces je nejprve dokument zvalidovat pomoci XSD
schematu
(doporucuji ruzne tutorialy na netu), a pote jej proste a
jednoudse nacist
do DOMu a parsovat. Je mozne, ze nejaka DOM knihovna to bude
umet udelat "v
jednom", ale v podstate jsou to dve ruzne veci.
Nebo jsem te mozna spatne pochopil. Zkus to reformulovat.
http://en.wikipedia.org/wiki/Document_Object_Model
http://en.wikipedia.org/wiki/XML_Schema_(W3C)
<http://en.wikipedia.org/wiki/XML_Schema_%28W3C%29>
-----
Later,
Lukas
--
View this message in context:
http://konference-java-cz.958153.n3.nabble.com/Vytvoreni-instance-XML-objektu-z-XSD-definice-tp2837707p2838272.html
Sent from the konference java.cz <http://java.cz> mailing
list archive at Nabble.com.
--
/**************************************/
Best regards / S pozdravem
Vladislav Krejčiřík
http://www.vkrejcirik.info
--
/**************************************/
Best regards / S pozdravem
Vladislav Krejčiřík
http://www.vkrejcirik.info