Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Usporedba .xml-a sa shemom

[es] :: Pascal / Delphi / Kylix :: Usporedba .xml-a sa shemom

[ Pregleda: 2852 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Usporedba .xml-a sa shemom23.02.2015. u 11:28 - pre 111 meseci
Na žalost nemam puno vremena za istraživanje, pa ako je možda već netko radio usporedbu xml file-a sa shemom? Dakle, želim dobiti popis grešaka u slučaju da xml ne odgovara shemi.

Hvala unaprijed svima!
F
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Usporedba .xml-a sa shemom23.02.2015. u 15:40 - pre 111 meseci
Pronašao sam ovo:

Code (delphi):
var
    XML, XSDL: Variant;
begin
    XSDL := CreateOLEObject('MSXML2.XMLSchemaCache.4.0');
    XSDL.validateOnLoad := True;
    XSDL.add('http://e-porezna.porezna-uprav...eme/zahtjevi/ObrazacJOPPD/v1-0','C:\jpd\ObrazacJOPPDtipovi-v1-0.xsd'); // 1st argument is target namespace
    ShowMessage('Schema Loaded');
    XML := CreateOLEObject('MSXML2.DOMDocument.4.0');
    XML.validateOnParse := True;
    XML.resolveExternals := True;
    XML.schemas := XSDL;
    XML.load('C:\jpd\file.xml');
    ShowMessage(XML.parseError.reason);


ali mi nije najjasnije kako to funkcionira. Definira se namespace iz sheme i onda valjda po tom namespace-u vrti po xml file-u?

Meni je situacija ovakva npr.

imam file.xml koje sadrži npr. slijedeće:

Code:
<ObrazacJOPPD verzijaSheme="1.0" xmlns="http://e-porezna.porezna-uprav...eme/zahtjevi/ObrazacJOPPD/v1-0">
<Metapodaci xmlns="http://e-porezna.porezna-uprava.hr/sheme/Metapodaci/v2-0">
<Naslov dc="http://purl.org/dc/elements/1.1/title">Izvješće o primicima, porezu na dohodak i prirezu te doprinosima za obvezna osiguranja</Naslov>
<Autor dc="http://purl.org/dc/elements/1.1/creator">Ime prezime</Autor>
<Datum dc="http://purl.org/dc/elements/1.1/date">2015-02-16T08:01:54</Datum>
<Format dc="http://purl.org/dc/elements/1.1/format">text/xml</Format>
<Jezik dc="http://purl.org/dc/elements/1.1/language">hr-HR</Jezik>
<Identifikator dc="http://purl.org/dc/elements/1.1/identifier">23ff9eb4-ae34-4c23-b533-43020d6980a5</Identifikator>
<Uskladjenost dc="http://purl.org/dc/terms/conformsTo">ObrazacJOPPD-v1-0</Uskladjenost>
<Tip dc="http://purl.org/dc/elements/1.1/type">Elektronički obrazac</Tip>
<Adresant>Ministarstvo Financija, Porezna uprava, Zagreb</Adresant>
</Metapodaci>
<StranaA>
<DatumIzvjesca>2015-02-16</DatumIzvjesca>
<OznakaIzvjesca>15047</OznakaIzvjesca>
<VrstaIzvjesca>1</VrstaIzvjesca>
<PodnositeljIzvjesca>
<Naziv>Test poduzeće d.o.o.</Naziv>
<Adresa>
<Mjesto>Zagreb</Mjesto>
<Ulica>Test adresa</Ulica>
<Broj>1</Broj>
</Adresa>
<Email>[email protected]</Email>
<OIB>012345678945</OIB>
<Oznaka>1</Oznaka>
</PodnositeljIzvjesca>
<BrojOsoba>93</BrojOsoba>
<BrojRedaka>113</BrojRedaka>
<PredujamPoreza>
<P1>0.00</P1>
<P11>0.00</P11>
...


zatim imam TemeljniTipovi-v2-1.xsd koji sadrži npr. slijedeće:

Code:
<?xml version="1.0" encoding="UTF-8" ?> 
- <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://e-porezna.porezna-uprava.hr/sheme/TemeljniTipovi/v2-1" targetNamespace="http://e-porezna.porezna-uprava.hr/sheme/TemeljniTipovi/v2-1" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.1" id="TemeljniTipovi-v2-1" xml:lang="hr-HR">
- <xsd:annotation>
  <xsd:documentation>Shema sadrži temeljne jednostavne tipove koji se koriste u ostalim shemama</xsd:documentation> 
  </xsd:annotation>
- <xsd:simpleType name="tDecimal14-2">
- <xsd:annotation>
  <xsd:documentation>Decimalni broj u formatu 14.2 (14 znamenki ukupno uključivši do dva decimalna mjesta)</xsd:documentation> 
  </xsd:annotation>
- <xsd:restriction base="xsd:decimal">
  <xsd:totalDigits value="14" /> 
  <xsd:fractionDigits value="2" /> 
  </xsd:restriction>
  </xsd:simpleType>
...


i zatim imam ObrazacJOPPDtipovi-v1-0.xsd koji sadrži npr. slijedeće:

Code:
<?xml version="1.0" encoding="UTF-8" ?> 
- <!--  edited with XMLSpy v2007 (http://www.altova.com) by Željko Mikic (Teched Consulting Ltd) 
  --> 
- <xsd:schema xmlns="http://e-porezna.porezna-uprav...eme/zahtjevi/ObrazacJOPPD/v1-0" xmlns:meta="http://e-porezna.porezna-uprava.hr/sheme/Metapodaci/v2-0" xmlns:ispostave="http://e-porezna.porezna-uprav...meljno/SifrarnikIspostave/v2-0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:temeljni="http://e-porezna.porezna-uprava.hr/sheme/TemeljniTipovi/v2-1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://e-porezna.porezna-uprav...eme/zahtjevi/ObrazacJOPPD/v1-0" elementFormDefault="qualified" version="1.0" id="ObrazacJOPPDtipovi-v1-0" xml:lang="hr-HR">
- <xsd:annotation>
  <xsd:documentation>XML shema sadrži tipove koji definiraju sadržaj JOPPD obrasca</xsd:documentation> 
  </xsd:annotation>
  <xsd:import namespace="http://e-porezna.porezna-uprava.hr/sheme/TemeljniTipovi/v2-1" schemaLocation="TemeljniTipovi-v2-1.xsd" /> 
  <xsd:import namespace="http://e-porezna.porezna-uprava.hr/sheme/Metapodaci/v2-0" schemaLocation="ObrazacJOPPDmetapodaci-v1-0.xsd" /> 
...
- <xsd:element name="IsplaceniNeoporeziviPrimici" type="temeljni:tNonNegativeDecimal15-2" minOccurs="0">
- <xsd:annotation>
  <xsd:documentation>VII. ISPLAĆENI NEOPOREZIVI PRIMICI</xsd:documentation> 
  </xsd:annotation>
  </xsd:element>
...


i sada ja moram provjeriti da li polje VII. ISPLAĆENI NEOPOREZIVI PRIMICI ima u sebi vrijednost tDecimal14-2.

Eto, nadam se da sam bio jasan, nisam puno radio sa xml-ovima pa bi mi pomoć bila dobrodošla

Hvala!
F
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Usporedba .xml-a sa shemom23.02.2015. u 17:26 - pre 111 meseci
Koliko shvatam, XML.parseError ti vraca IXMLDOMParseError interfejs cim naidje na prvu gresku, kad se ona ispravi ponovis proces sve dok se xml ne iscisti. Ne znam da li tako mozes dobiti listu svih problema odjednom.
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Usporedba .xml-a sa shemom23.02.2015. u 17:38 - pre 111 meseci
To sam i ja shvatio da radi. Ali dobijem npr. odmah ovu grešku:

Code (delphi):
The element 'ObrazacJOPPD' is used but not declared in the DTD/Schema.


a .xml file je sigurno ispravan jer se u primjeru tog obrasca nalazi linija

Code:
<ObrazacJOPPD verzijaSheme="1.0" xmlns="http://e-porezna.porezna-uprav...eme/zahtjevi/ObrazacJOPPD/v1-0">


Drugi problem je šta se tu koristi ObrazacJOPPDtipovi-v1-0.xsd koji definira koji tu tipovi podataka po polju .xml-a, a u TemeljniTipovi-v2-1.xsd se nalaze definicije tih tipova podataka. Pitanje je kako povezati ta dva .xsd-a?

Jer koliko shvaćam, trebalo bi kod parsiranja file.xml uzeti npr. polje <Test>, pogledati u ObrazacJOPPDtipovi-v1-0.xsd koji je tip podataka definiran za to polje, neka je npr. tDecimal i onda pogledati u TemeljniTipovi-v2-1.xsd gdje piše da je npr. tDecimal {0-9}.
F
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Usporedba .xml-a sa shemom23.02.2015. u 18:06 - pre 111 meseci
> a .xml file je sigurno ispravan jer se u primjeru tog obrasca nalazi linija
> <ObrazacJOPPD verzijaSheme="1.0" xmlns="http://e-porezna.porezna-uprav...eme/zahtjevi/ObrazacJOPPD/v1-0">

Ti referenciras ObrazacJOPPD, a trazi ti definiciju, gde ti je sema fajl za njega? Pokusaj da ih skines sve lokalno pa mu prosledis samo osnovni xsd a on ce posle toga da isprati (ucita ostale).

> Drugi problem je šta se tu koristi ObrazacJOPPDtipovi-v1-0.xsd koji definira koji tu tipovi podataka po polju .xml-a, a u TemeljniTipovi-v2-1.xsd se nalaze
> definicije tih tipova podataka. Pitanje je kako povezati ta dva .xsd-a?

Mislim da sa onim ResolveExternal bi sam XML trebao da to isprati (ucita eksterne i slicno), ti samo moras navesti tacne URIje i proveriti da li na njima ima tog sadrzaja.

 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Usporedba .xml-a sa shemom23.02.2015. u 18:29 - pre 111 meseci
Savkic, po ne znam koji put hvala! Dao sam krivu referencu na shemu file-a, naravno da nije moglo raditi

Još jednom puno hvala, za sada imaš virtualnu pivu, bude i prava nadam se!
F
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Usporedba .xml-a sa shemom

[ Pregleda: 2852 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.