Stworzenie schematu XSD do już istniejącego XML

0

Witam

Mam problem ze schematem XSD. Jestem laikiem w tym temacie a potrzebuje stworzyć schemat do już istniejącego XML. Uproszczony kod poniżej:

<?xml version="1.0" encoding="Windows-1250"?>
   <ZoznamDanovychSubjektovRegistrovanychPreSpotrebneDane>
<CIS_SPDS>
        <ITEM>
       <REGISTRACNECISLO>SK51000900001</REGISTRACNECISLO>
         <NAZOVSUBJEKTU>IMPREX, s.r.o.</NAZOVSUBJEKTU>
      </ITEM>
       <ITEM>
         <REGISTRACNECISLO>SK51000900001</REGISTRACNECISLO>
         <NAZOVSUBJEKTU>IMPREX, s.r.o.</NAZOVSUBJEKTU>
      </ITEM>
      </CIS_SPDS>
</ZoznamDanovychSubjektovRegistrovanychPreSpotrebneDane>

Próbuje tym sposobem i nic nie zwraca, nie wywala też błędu:

<?xml version="1.0" encoding="windows-1250" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element  name="ZoznamDanovychSubjektovRegistrovanychPreSpotrebneDane">
    <xs:complexType>
      <xs:sequence>
            <xs:element  name="CIS_SPDS">  
          <xs:complexType>
            <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="ITEM">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="REGISTRACNECISLO" type="xs:string"/>
              <xs:element name="NAZOVSUBJEKTU" type="xs:string"/>
              </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Wcześniej robiłem taki schemat, który widać poniżej dla podobnego pliku i tam działało elegancko. Nie rozumiem dlaczego w powyższym schemacie nie znajduje mi żadnych danych. Byłbym wdzięczny za jakąś podpowiedz.

XML

<baza data="01.06.2017 12:18:34" data_unix="1496312314"><rekord id="51876941">
<pole1 nazwa="Nazwa przedsiębiorstwa">DS SERVICE Sp. z o.o.</pole1><pole2 nazwa="DKN">24866</pole2></rekord></baza>

XSD działający

<?xml version="1.0" encoding="UTF-8" ?>
​​<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
​​  <xs:element  name="baza">
​​    <xs:complexType>
​​      <xs:sequence>
​​        <xs:element maxOccurs="unbounded" name="rekord">
​​        <xs:complexType>
​​          <xs:sequence>
​​            <xs:element name="pole1" type="xs:string"/>
​            <xs:element name="pole2" type="xs:string"/>
​          </xs:sequence>
​  </xs:complexType>
​</xs:element>
​      </xs:sequence>
​    </xs:complexType>
​  </xs:element>
​​​      </xs:schema>
​

0

Nie rozumiem co chcesz konkretnie osiagnac. Nie chodzi Ci przypadkiem o transformacje xslt ?

0
Wybitny Mleczarz napisał(a):

Nie rozumiem co chcesz konkretnie osiagnac. Nie chodzi Ci przypadkiem o transformacje xslt ?

Nie. Jemu chodzi o to jak, mając plik XML, utworzyć XML Schema, czyli plik XSD.

0

Napisal ze potrzebuje stworzyc schemat xml i probuje jakims sposobem ale nie wychodzi, chociaz wstawil xsd. Nie rozumiem co to znaczy nie wychodzi.
Poza tym Xsd nie sluzy do znalezienia danych tylko do walidacji schematu (budowy) dokumentu xml.

0

Chyba ze kolega mial na mysli ze jego xml nie przechodzi walidacji tym xsd i uwaza ze cos jest z nim(xsd) nie tak? Wedlug mnie jest w porzadku

0
Wybitny Mleczarz napisał(a):

Poza tym Xsd nie sluzy do znalezienia danych tylko do walidacji schematu (budowy) dokumentu xml.

Ale nie tylko. Automat stworzy mu klasy do których wczyta dane o ile tylko walidacja się wykona. Automat z XML'a klas nie zrobi.

0

Automat rownie dobrze moze zrobic xsd z xml wiec z xml tez automat moze wygenerowac klasy(jest taka opcja np w visual studio). Ale nie rozumiem co to ma do rzeczy.

0

Mam Plik XML który będzie aktualizowany nie bieżąco i potrzebuje z niego wyciągać dane robiąc automatyczne ładowanie do hurtowni danych. Problem w tym, że nie mam schematu XSD który jest potrzebny aby dane ładnie załadować. Próbuję go stworzyć, przechodzi walidacje ale nie wyciąga żadnych danych, nie pokazuje żadnego błędu więc prawdopodobnie czegoś w schemacie brakuje a ja nadal nie wiem czego bo z tych tutoriali co przeglądałem jest niby prawidłowo.

0

Już chyba jestem bliski rozwiązania ustawiłem kodowanie w xsd na utf-8 mimo że w xml jest 1250 i zaczęło wywalać błąd, po sprawdzeniu okazało się, że plik xml ma nieprawidłową strukturę bo niektórych pól jest więcej niż <ITEM>.

1 użytkowników online, w tym zalogowanych: 0, gości: 1