Ja nejak tak v kutiku duse od zaciatku toho threadu pocitujem, ze autor chce
"generator xml na zaklade xsd" z akychysi vymyslenych hodnot ( splnajucich
podmienky na validitu vysledneho dokumentu ). Je to tak?

To predsa technicky nie je ziaden problem, aj ked som sa osobne so ziadnou
takou utilitou zoci-voci este nestretol. Mozno take cosi vedia nejake
sofistikovanejsie xml/xsd editory typu komodo a spol.

--
Dusan

2011/4/19 Vladislav Krejčiřík <[email protected]>

> Rozumim tomu co pisete, ja s tim souhlasim. Obecne to tak je. Ale jak jsem
> psal, u me je to hodne specificky priklad. XSD se nemeni za behu aplikace.
> Jsou pevne dane pred spustenim aplikace. Postup je takovy, ze uzivatel
> nahraje potrebna XSD do daneho adresare. Potom spusti aplikaci. Aplikace si
> tato XSD nahraje a pomoci XSOMu naparsuje. Pomoci XSOMu je schopna zjistit
> informace z anotaci...
>
> Data vim kam budu vyplnovat. U kazdeho elementu mam anotaci ktera obsahuje
> key, identifikator toho jakou hodnotu tam mam vlozit. Takze jak jsem psal,
> tak asi jedinym zpusobem ktery me napadl je projit objektovou reprezentaci
> XSD a vytvaret XML message. Tam kde narazim na element s anotaci tak tam
> vlozim podle zadaneho key hodnotu. Tuto message pak poslu. V podstate jak
> asi spravne pisete tak jiny zpusob ani neni mozny..
>
> Je to velice specificke XSD. Mozna jsem mel rict ze XSD je vytvareno XSD
> designerem treti strany. Tento designer neumoznuje vytvorit jinou strukturu
> XSD nez ktera je pozadovana aplikaci. Tzn. jeden complexType se sequenci
> ktera obsahuje elementy ruznych typu.
>
> Diky za pripominky a navrhy
>
>
>
>
>
>
>
>
>
>
>
> 2011/4/19 Petr Novak <[email protected]>
>
>>
>> Stejně asi jako ostatní si myslím, že to, co chcete vytvořit je tak trochu
>> nesmysl. Možná to bude fungovat ve velmi omezené podobě na drobné změny v
>> xsd, ale i to, že žádná podobná knihovna asi vůbec neexistuje svědčí o tom,
>> že takto se tato problematika neřeší.
>> To budete psát parser s umělou inteligencí, který umí odpovídat na
>> jakýkoliv dotaz - ty příklady se slovenštinou byly přesný :) .  Jak už tu
>> bylo několikrát uvedeno, těžko můžete vyplňovat data, která ani nevíte kam
>> budete vyplňovat, případně, když po Vás XSD bude vyžadovat nové položky, tak
>> to byste pak k tomu musel dynamicky dogenerovat i nějakou logiku v aplikaci,
>> která by je vypočítala a doplnila a nebo to napojit na křišťálovou kouli :).
>>
>> Nevím jak často a jak moc se Vám ta XSD mění a kdo je jejich dodavatelem
>> (jestli to je v rámci projektu, nebo externě).  Ale z principu věci pokud
>> Vám někdo mění to XSD - tedy vzdálené rozhraní, tak buď musí dělat
>> kompatibilní změny, pak vy nemusíte nic měnit a nepotřebujete dynamické
>> generování XML, protože to Vaše naimplementované bude stále validní.  A nebo
>> dělá nekompatibilní změny a pak vy musíte vytvořit novou knihovnu na základě
>> nového XSD  - standardní Change-Request-management.  Pak by ty XSD měly být
>> verzované, atd..  Navíc, pokud ta změna bude až takového rázu, že tam
>> přibude třeba datový element navíc, tak to stejně může znamenat, že musíte
>> upravit dotazy do DB, apod. abyste ty data vůbec získal a mohl je vložit do
>> XML.
>>
>> Vždy když slyším podobný požadavek od svých kolegů, tak jim vysvětlím, co
>> je to API  a XSD je API a všem, co něco takového navrhují doporučuji
>> nastudovat http://wiki.apidesign.org/wiki/Main_Page  a především celou tu
>> knížku Jardy Tulacha, a je úplně jedno, že to není o XSD, protože principy
>> jsou stále stejné.  Ale chápu, že jste možná v situaci, kdy Vám to API
>> dodává třetí strana, která neumí držet zpětnou kompatibilitu a neustále něco
>> mění - pak jsou jen 2 řešení - buď změnit dodavatele a nebo udělat
>> mezivrstvu, která bude tuto nekompatibilitu řešit. I o tom je v té knize
>> povídáno - řešení závislostí na třetích stranách.
>>
>> Proto se asi v těchto případech používají různé integrační servery, ESB,
>> apod.  - vlastně tvoří tu mezivrstvu.  A tak mě napadá, že tím se můžete i
>> inspirovat a použít XSL.
>>
>> Udělat to více volně vázané, tedy  vy budete generovat nějaké své statické
>> XML, které budete přes XSL transformovat na to požadované XML odpovídající
>> tomu XSD.  Ale ani to XSL nedokážete asi generovat dynamicky podle XSD.  Ale
>> mělo by to výhodu v tom, že nemusíte programovat, kompilovat, deployovat,
>> apod.   Prostě jen budete měnit transformační šablony umístěné v adresáři
>> mimo.
>>
>> A nebo ještě mě napadlo  použít šablony na generování toho XML z dat -
>> tedy  třeba vzít  freemarker, nebo velocity - udělat si v něm šablonu XML
>> elementů (prostě šablonu té message) a na patřičná místa doplňovat jen
>> hodnoty.  A když se změní API v podobě změny XSD, tak hold musí někdo
>> sednout a ty šablony upravit pro tu novou verzi.  A opět se nemusí řešit
>> žádná kompilace, apod.  Prostě jen nahrajete nová XSD, upravíte šablonu,
>> vygenerujete si zkušební XML, proženete ho přes XSD validator, tím ověříte,
>> že vše je OK, že šablona generuje správná XML, která pak můžete v klidu
>> posílat dál do fronty.
>>
>> A nebo použít nějaký dynamický jazyk a skládat to jako DOM mimo javu, aby
>> ty změny byly jednodušeji zapracovatelné - groovy, ruby, apod. Vlastně je to
>> podobné těm šablonám, jen jiný způsob.
>>
>> Tak snad to dá zase trochu jiný pohled na Váš problém ...
>>
>>
>>
>> Dne 19.4.2011 15:27, Vladislav Krejčiřík napsal(a):
>>
>> 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]>
>>
>>>  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]>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)
>>>>
>>>>
>>>> -----
>>>> 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 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
>>
>>
>>
>>
>> --
>> Petr
>>
>>
>
>
> --
>
> /**************************************/
> Best regards / S pozdravem
> Vladislav Krejčiřík
>
> http://www.vkrejcirik.info
>
>
>

Odpovedet emailem