🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

8 total messages Started by abc_javy Mon, 08 Sep 2008 12:44
validacja XML by XSD a problem namespace w SAXParser
#9966
Author: abc_javy
Date: Mon, 08 Sep 2008 12:44
151 lines
5496 bytes
X-No-Archive: Yes

ja mam blad czy ministerstwo ?

Witam, napisalem sobie klase
i niestety gdy probuje validowac, a dokladniej
000001005_COIA_Spis.xml z tej stronki za pomoca
http://epl.icm.edu.pl/viewtopic.php?t=126&highlight=spis

====================================
<?xml version="1.0" encoding="UTF-8" ?>
<SpisZdawczoOdbiorczy xmlns="http://www.mswia.gov.pl/standardy/ndap"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mswia.gov.pl/standardy/ndap
SpisZdawczo-odbiorczy.xsd">
<Sprawa>.....
......
====================================

https://ndapapp.nask.net.pl/pack/SpisZdawczo-odbiorczy.xsd
====================================
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.mswia.gov.pl/standardy/ndap"
xmlns:tns="http://www.mswia.gov.pl/standardy/ndap"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<element name="SpisZdawczoOdbiorczy">
<complexType>.........
.......
====================================


to wywala wyjatkiem
Error on line 2: cvc-elt.1: Cannot find the declaration of element
'SpisZdawczoOdbiorczy'.

obojetnie czy dac w metodzie  Saxa

saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
new File(pathfilexsd).toURI().toString());
 czy
saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",
new File(pathfilexsd).toURI().toString());


Klase dolaczam, mozna sobie xml i xsd sicagnac i klase wywolac
ValidatorXML validatorXML = new ValidatorXML();
validatorXML.validate("./SpisZdawczo-odbiorczy.xsd",
    "./000001005_COIA_Spis.xml",
    false);



Jakiekolwiek pomysly mile widziane, bo po tygodniu nie ma juz zadnych


-------------klasa------
package com.ja.xml;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

/**
 * @author ja
 *
 */
public class ValidatorXML {

 public String validate(String pathfilexsd, String pathfilexml, boolean
nonamespace)
 {
  System.out.println(new File(pathfilexml).toURI().toString());
  org.jdom.Document myDocument = null;
  SAXBuilder builder = new SAXBuilder();
  try {
   myDocument = builder.build(new FileInputStream(pathfilexml));
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (JDOMException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return validate(pathfilexsd, myDocument, nonamespace);
 }



 public String validate(String pathfilexsd, org.jdom.Document myDocument,
boolean nonamespace)
 {
  String DEFAULT_PARSER_NAME =
  "org.apache.xerces.parsers.SAXParser";
     SAXBuilder saxBuilder = new SAXBuilder(DEFAULT_PARSER_NAME, true);
     // Turn on validation
  saxBuilder.setFeature("http://apache.org/xml/features/validation/schema",
true);
  saxBuilder.setFeature("http://apache.org/xml/features/validation/schema-full-checking",
true);
  saxBuilder.setFeature("http://xml.org/sax/features/validation", true);
  File filexsd = new File(pathfilexsd);
  if (!filexsd.exists())
  {
   System.err.println(new Exception());
   return "Brak pliku xsd";
  }
  if (nonamespace)
  {
   saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
new File(pathfilexsd).toURI().toString());
  }
  else
  {
   saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",
new File(pathfilexsd).toURI().toString());
  }

  System.out.println(new File(pathfilexsd).toURI().toString());
     ByteArrayOutputStream out = new ByteArrayOutputStream();
     XMLOutputter serializer = new XMLOutputter(Format.getCompactFormat());
     try {
   serializer.output(myDocument, out);
  } catch (IOException e) {
   e.printStackTrace();
   return e.getMessage();
  }
  //
     try {
      ByteArrayInputStream byteArrayInputStream = new
ByteArrayInputStream(out.toByteArray());
      saxBuilder.build(byteArrayInputStream);
   } catch (JDOMException e) {
     System.err.println(e.getMessage());
   return e.getMessage();
  } catch (IOException e) {
   e.printStackTrace();
   return e.getMessage();
  }
  System.out.println("Validacja zakońcozna pomyślnie");
  return "0";
 }
}
Re: validacja XML by XSD a problem namespace w SAXParser
#9967
Author: szomiz
Date: Mon, 08 Sep 2008 15:35
8 lines
1328 bytes
Użytkownik "abc_javy" <bez@spamu.com> napisał w wiadomości 
news:ga36np$ahr$1@inews.gazeta.pl...

> ja mam blad czy ministerstwo ?

Podaj linka do schemy, to co jest w xsi: nie abla.

sz. 
Re: validacja XML by XSD a problem namespace w SAXParser
#9968
Author: szomiz
Date: Mon, 08 Sep 2008 15:46
19 lines
1811 bytes
Użytkownik "szomiz" <szomiz@kocha.dostawac.reklamy.przez.net> napisał w 
wiadomości news:ga3grf$bhe$1@atlantis.news.neostrada.pl...
> Użytkownik "abc_javy" <bez@spamu.com> napisał w wiadomości 
> news:ga36np$ahr$1@inews.gazeta.pl...
>
>> ja mam blad czy ministerstwo ?
>
> Podaj linka do schemy, to co jest w xsi: nie abla.

I to jest zdaje sie problem - pod url'em z xsi:schemaLocation nie ma schemy.

Na szybko wyglada, ze po wywaleniu wskazania powinno sie zwalidowac.

Dupy dalo ministerstwo - nie powinno publikowac przykladu z odwolaniem do 
nieistniejacego zasobu.

Nie mowiac, ze w ogole nie powinno wstawiac xsi:schemaLocation do plikow...

sz.
Re: validacja XML by XSD a problem namespace w SAXParser
#9969
Author: abc_javy
Date: Tue, 09 Sep 2008 07:23
39 lines
2265 bytes
Użytkownik "szomiz" <szomiz@kocha.dostawac.reklamy.przez.net> napisał w 
wiadomości news:ga3hqb$k71$1@nemesis.news.neostrada.pl...
> Użytkownik "szomiz" <szomiz@kocha.dostawac.reklamy.przez.net> napisał w 
> wiadomości news:ga3grf$bhe$1@atlantis.news.neostrada.pl...
>> Użytkownik "abc_javy" <bez@spamu.com> napisał w wiadomości 
>> news:ga36np$ahr$1@inews.gazeta.pl...
>>
>>> ja mam blad czy ministerstwo ?
>>
>> Podaj linka do schemy, to co jest w xsi: nie abla.
>
> I to jest zdaje sie problem - pod url'em z xsi:schemaLocation nie ma 
> schemy.
>
> Na szybko wyglada, ze po wywaleniu wskazania powinno sie zwalidowac.
>
> Dupy dalo ministerstwo - nie powinno publikowac przykladu z odwolaniem do 
> nieistniejacego zasobu.
>
> Nie mowiac, ze w ogole nie powinno wstawiac xsi:schemaLocation do 
> plikow...




nie pomaga

zmienilem na
xsi:schemaLocation="C:/workspaces/01/project_test/src/com/ja/xml/xsd/SpisZdawczo-odbiorczy2.xsd"

i teraz ten validator mi wywala

Error on line 2: cvc-elt.1: Cannot find the declaration of element
'SpisZdawczoOdbiorczy'.

gdy calkiem wywala xsi:SchemaLocation to rowniez daje:

Error on line 2: cvc-elt.1: Cannot find the declaration of element 
'SpisZdawczoOdbiorczy'.
Re: validacja XML by XSD a problem namespace w SAXParser
#9970
Author: szomiz
Date: Tue, 09 Sep 2008 16:27
16 lines
1618 bytes
Użytkownik "abc_javy" <bez@spamu.com> napisał w wiadomości 
news:ga5899$h2n$1@inews.gazeta.pl...

> gdy calkiem wywala xsi:SchemaLocation to rowniez daje:
>
> Error on line 2: cvc-elt.1: Cannot find the declaration of element 
> 'SpisZdawczoOdbiorczy'.

Strzelam:

wczesniej ustawiasz: 
saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",

Ta ona schema nie jest no-namespace

sz. 
Re: validacja XML by XSD a problem namespace w SAXParser
#9971
Author: abc_javy
Date: Wed, 10 Sep 2008 05:58
18 lines
1741 bytes
Użytkownik "szomiz" <szomiz@kocha.dostawac.reklamy.przez.net> napisał w 
wiadomości news:ga689i$3q7$1@atlantis.news.neostrada.pl...
> Użytkownik "abc_javy" <bez@spamu.com> napisał w wiadomości 
> news:ga5899$h2n$1@inews.gazeta.pl...
>
>> gdy calkiem wywala xsi:SchemaLocation to rowniez daje:
>>
>> Error on line 2: cvc-elt.1: Cannot find the declaration of element 
>> 'SpisZdawczoOdbiorczy'.
>
> Strzelam:
>
> wczesniej ustawiasz: 
> saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
>
> Ta ona schema nie jest no-namespace

jak widziales w metodzie, probowalem i tak, nie pomaga 
Re: validacja XML by XSD a problem namespace w SAXParser
#9972
Author: szomiz
Date: Mon, 15 Sep 2008 18:01
11 lines
1538 bytes
Użytkownik "abc_javy" <bez@spamu.com> napisał w wiadomości 
news:ga7nlo$gb0$1@inews.gazeta.pl...

> jak widziales w metodzie, probowalem i tak, nie pomaga

No to nie mam pomyslu :/

Diabel tkwi w jakims szczegole. Sprobuj walidowac dokument zDOMowany a nie 
zSAXowany.

sz. 
Re: validacja XML by XSD a problem namespace w SAXParser
#9973
Author: Andrew Cohen
Date: Mon, 15 Sep 2008 18:41
18 lines
1684 bytes
abc_javy pisze:
> obojetnie czy dac w metodzie  Saxa
> saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
> new File(pathfilexsd).toURI().toString());
>  czy
> saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",
> new File(pathfilexsd).toURI().toString());

   Zmieniłem na:
            saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",
                    "http://www.mswia.gov.pl/standardy/ndap "+
                    new File(pathfilexsd).toURI().toString());

   i wypisało, że "Validacja zako?cozna pomy?lnie". Zmieniłem tak, ponieważ w pliku XML były podane dwie rzeczy:

xsi:schemaLocation="http://www.mswia.gov.pl/standardy/ndap SpisZdawczo-odbiorczy.xsd"

http://www.w3.org/TR/xmlschema-1/#schema-loc
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads