Thread View: pl.comp.xml
8 messages
8 total messages
Started by abc_javy
Mon, 08 Sep 2008 12:44
validacja XML by XSD a problem namespace w SAXParser
Author: abc_javy
Date: Mon, 08 Sep 2008 12:44
Date: Mon, 08 Sep 2008 12:44
151 lines
5496 bytes
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
Author: szomiz
Date: Mon, 08 Sep 2008 15:35
Date: Mon, 08 Sep 2008 15:35
8 lines
1328 bytes
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
Author: szomiz
Date: Mon, 08 Sep 2008 15:46
Date: Mon, 08 Sep 2008 15:46
19 lines
1811 bytes
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
Author: abc_javy
Date: Tue, 09 Sep 2008 07:23
Date: Tue, 09 Sep 2008 07:23
39 lines
2265 bytes
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
Author: szomiz
Date: Tue, 09 Sep 2008 16:27
Date: Tue, 09 Sep 2008 16:27
16 lines
1618 bytes
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
Author: abc_javy
Date: Wed, 10 Sep 2008 05:58
Date: Wed, 10 Sep 2008 05:58
18 lines
1741 bytes
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
Author: szomiz
Date: Mon, 15 Sep 2008 18:01
Date: Mon, 15 Sep 2008 18:01
11 lines
1538 bytes
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
Author: Andrew Cohen
Date: Mon, 15 Sep 2008 18:41
Date: Mon, 15 Sep 2008 18:41
18 lines
1684 bytes
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