[ anon315 @ 10.11.2006. 14:17 ] @
XML sema:

Code:

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="paket">
    <xsd:annotation>
      <xsd:documentation>
        A sample element
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="devojke">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="devojka" maxOccurs="unbounded" minOccurs="0">
                <xsd:complexType>
                  <xsd:attribute name="id"/>
                  <xsd:attribute name="sifoni"/>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="momci">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="momak" maxOccurs="unbounded" minOccurs="0">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="devojka" maxOccurs="unbounded">
                      <xsd:complexType>
                        <xsd:attribute name="refId"/>
                      </xsd:complexType>
                    </xsd:element>
                  </xsd:sequence>
                  <xsd:attribute name="id"/>
                  <xsd:attribute name="ime"/>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>


XML za validaciju:

Code:

<?xml version="1.0" encoding="UTF-8" ?>
<paket>
  <devojke>
    <Xdevojka id="1" sifoni="4"/> <!-- NAMERNA GRESKA -->
    <devojka id="2" sifoni="5"/>
    <devojka id="3" sifoni="6"/>
  </devojke>
  <momci>
    <momak id="1" ime="Goran">
      <devojka refId="1"/>
      <devojka refId="2"/>
    </momak>
    <momak id="2" ime="Mixailo">
      <devojka refId="2"/>
      <devojka refId="3"/>
    </momak>
  </momci>
</paket>


Java metoda:

Code:

    private void validacijaXML() {
        
        try {

                   // Parse an XML document into a DOM tree.
                   DocumentBuilder parser =
                       DocumentBuilderFactory.newInstance().newDocumentBuilder();
                    org.w3c.dom.Document document = parser.parse(new File("test.xml"));

                   // Create a SchemaFactory capable of understanding WXS schemas.
                   SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
            

                   // Load a WXS schema, represented by a Schema instance.
                   Source schemaFile = new StreamSource(new File("../Shema/xmlSema.xsd"));
                   Schema schema = factory.newSchema(schemaFile);

                   // Create a Validator object, which can be used to validate
                   // an instance document.
                   Validator validator = schema.newValidator();

                   // Validate the DOM tree.
                   validator.validate(new DOMSource(document));

               } catch (ParserConfigurationException e) {
                   // exception handling
                    System.out.println("Bla1!");
               } catch (SAXException e) {
                   // exception handling - document not valid!
                   System.out.println("Nije validan xml!");
               } catch (IOException e) {
                   // exception handling
                    System.out.println("Bla2!");
               }       
    }


I samo prodje i ne obradi gresku, kao da je sve ok!

Gde gresim?

V
[ djalfirevic @ 11.11.2006. 09:19 ] @
Taj cuveni XML...

Nisam koristio XSD schemu do sada, vec sam samo parsirao XML fajl u Javu i iz Jave sam kreirao novi XML fajl. Kada se pogresi neki tag odmah se detektuje greska. Ne znam zasto tebi nece da detektuje gresku.

[ anon315 @ 11.11.2006. 11:19 ] @
Vidi o cemu se radi:

Postoje 2 nacina kako dobijam XML:

1. Programski - moj algoritam na osnovu nekih prikupljenih informacija generise taj XML i u tom slucaju on je vec validan jer postujem semu. Generisani XML se smesta na fajl sistem.

2. Korisnik uploaduje rucno generisani XML - e tu nastaje problem, jer ja uopste ne treba da ga parsiram, vec samo da ga smestim na disk ako je validan, sto ce reci da moram da izvrsim validaciju...

Postoji nekolicina API-a za validaciju, ali sam se odlucio za ovu Sun-ovu implementaciju sto je dosla uz Javu 1.5, medjutim nesto me zeza.

Odavde sam pratio uputstva:

http://java.sun.com/developer/...lArticles/xml/validationxpath/

Pokusao sam posle sa njihovim primerom i opet mi ne radi...

A sto se tice samog parsiranja, to nije problem, ako ja u kodu ocekujem neki tag ili atribut, a dobijem nesto sesto, to ce puci, ali nije to ono sto mi treba...
[ anon315 @ 11.12.2006. 21:36 ] @
E da, btw, problem sam odavno resio primenom JAXB-a koji, prakticno, vrsi validaciju on the fly, jer su jaxb klase i izgenerisene iz xsd seme ;)