Thread View: be.comp.programming
5 messages
5 total messages
Started by Joris Janssens
Tue, 10 Aug 2004 21:37
[C# .NET] validating XHTML 1.1
Author: Joris Janssens
Date: Tue, 10 Aug 2004 21:37
Date: Tue, 10 Aug 2004 21:37
97 lines
4408 bytes
4408 bytes
Ik probeer XHTML 1.1-bestanden te laten valideren met behulp van
XmlValidatingReader Maar ik krijg steeds een WebException "(404) Not
Found"
Dit is de volledige foutmelding:
System.Net.WebException: The remote server returned an error: (404) Not
Found.
at System.Net.HttpWebRequest.CheckFinalStatus()
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult
asyncResult)
at System.Net.HttpWebRequest.GetResponse()
at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri,
ICredentials crede
ntials)
at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials
credentials)
at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role,
Type ofO
bjectToReturn)
at System.Xml.Schema.DtdParser.HandlePERef()
at System.Xml.Schema.DtdParser.ParseDtdContent()
at System.Xml.Schema.DtdParser.ParseConditionalSect()
at System.Xml.Schema.DtdParser.ParseDtdContent()
at System.Xml.Schema.DtdParser.ParseConditionalSect()
at System.Xml.Schema.DtdParser.ParseDtdContent()
at System.Xml.Schema.DtdParser.ParseDocTypeDecl()
at System.Xml.Schema.DtdParser.Parse()
at System.Xml.XmlTextReader.ParseDtd(XmlScanner scanner)
at System.Xml.XmlTextReader.ParseTag()
at System.Xml.XmlTextReader.ParseRoot()
at System.Xml.XmlTextReader.Read()
at System.Xml.XmlValidatingReader.ReadWithCollectTextToken()
at System.Xml.XmlValidatingReader.Read()
at ValidatorTest.SimpleValidator.Main(String[] args) in
e:\flotspe\cs\visual
studio projects\validatortest\class1.cs:line 31
*********************************************************************
En dit is de code (console application):
[STAThread]
static void Main(string[] args) {
string url="http://users.telenet.be/flotspe/test.xhtml";
Stream stream=FetchUrl(url);
XmlTextReader reader=new XmlTextReader(FetchUrl(url));
XmlValidatingReader valReader=new XmlValidatingReader(reader);
valReader.ValidationEventHandler+=new
ValidationEventHandler(valHandler);
valReader.ValidationType = ValidationType.DTD;
while (valReader.Read()) {
//Console.WriteLine(valReader.LocalName);
}
valReader.Close();
stream.Close();
}
private static Stream FetchUrl(string url) {
WebClient browser=new WebClient();
try {
return browser.OpenRead(url);
}
catch (Exception err) {
Console.WriteLine(err.Message);
return null;
}
}
private static void valHandler(object sender,
System.Xml.Schema.ValidationEventArgs e) {
Console.WriteLine(e.Message);
}
*********************************************************************
En dit is het XHTML 1.1 bestand in kwestie
<http://users.telenet.be/flotspe/test.xhtml>
maar bij andere XHTML 1.1-bestanden (al dan niet lokaal) is het
probleem hetzelfde
*********************************************************************
Deze code werkt wel als ik <http://users.telenet.be/flotspe/book.xml>
wil valideren tegen de DTD <http://users.telenet.be/flotspe/books.dtd>
Kan iemand mij zeggen waar het probleem ligt en hoe het op te lossen?
--
Joris "flotspe" Janssens *** http://inferno.xhtml.be/
m(28,23,Kempen) zkt v(20<=age<=35,20<=bmi<=25,Kempen)
Re: [C# .NET] validating XHTML 1.1
Author: TRAX
Date: Wed, 11 Aug 2004 10:11
Date: Wed, 11 Aug 2004 10:11
16 lines
1717 bytes
1717 bytes
> [STAThread]
> static void Main(string[] args) {
> string url="http://users.telenet.be/flotspe/test.xhtml";
> Stream stream=FetchUrl(url);
> XmlTextReader reader=new XmlTextReader(FetchUrl(url));
> XmlValidatingReader valReader=new XmlValidatingReader(reader);
> valReader.ValidationEventHandler+=new
> ValidationEventHandler(valHandler);
> valReader.ValidationType = ValidationType.DTD;
Ik vermoed dat je de DTD file ook ergens zal moeten meegeven, je valideert
a.d.h.v een DTD file maar nergens zeg je waar die zich bevindt. Dus moet je
kiezen voor een andere validationtype, of de locatie van het DTD bestand
aangeven.
Het blijft bij vermoedens uiteraard :)
Re: [C# .NET] validating XHTML 1.1
Author: Joris Janssens
Date: Wed, 11 Aug 2004 12:03
Date: Wed, 11 Aug 2004 12:03
111 lines
5914 bytes
5914 bytes
TRAX formuleerde op woensdag :
>> [STAThread]
>> static void Main(string[] args) {
>> string url="http://users.telenet.be/flotspe/test.xhtml";
>> Stream stream=FetchUrl(url);
>> XmlTextReader reader=new XmlTextReader(FetchUrl(url));
>> XmlValidatingReader valReader=new XmlValidatingReader(reader);
>> valReader.ValidationEventHandler+=new
>> ValidationEventHandler(valHandler);
>> valReader.ValidationType = ValidationType.DTD;
>
>
> Ik vermoed dat je de DTD file ook ergens zal moeten meegeven, je valideert
> a.d.h.v een DTD file maar nergens zeg je waar die zich bevindt. Dus moet je
> kiezen voor een andere validationtype, of de locatie van het DTD bestand
> aangeven.
> Het blijft bij vermoedens uiteraard :)
Ja maar de url van de DTD staat wel in de DOCTYPE vermeld en het lijkt
die URL ook wel echt te gebruiken. Zo kan ik
<http://localhost:8080/dtd/book.xml> met als DTD <!DOCTYPE book SYSTEM
'http://users.telenet.be/flotspe/books.dtd'> probleemloos valideren.
Als ik die url naar het dtd-bestand ongeldig maak krijg ik wel die
404-error.
Er is me wel iets opgevallen aan die foutmeldingen.
Dit de foutmelding als de URL naar de DTD ongeldig is:
*****************************************************
Unhandled Exception: System.Net.WebException: The remote server
returned an erro
r: (404) Not Found.
at System.Net.HttpWebRequest.CheckFinalStatus()
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult
asyncResult)
at System.Net.HttpWebRequest.GetResponse()
at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri,
ICredentials crede
ntials)
at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials
credentials)
at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role,
Type ofO
bjectToReturn)
at System.Xml.Schema.DtdParser.ParseDocTypeDecl()
at System.Xml.Schema.DtdParser.Parse()
at System.Xml.XmlTextReader.ParseDtd(XmlScanner scanner)
at System.Xml.XmlTextReader.ParseTag()
at System.Xml.XmlTextReader.ParseRoot()
at System.Xml.XmlTextReader.Read()
at System.Xml.XmlValidatingReader.ReadWithCollectTextToken()
at System.Xml.XmlValidatingReader.Read()
at ValidatorTest.SimpleValidator.Main(String[] args) in
e:\flotspe\cs\visual
studio projects\validatortest\class1.cs:line 24
*****************************************************
Dit is daarentegen de foutmelding bij validatie van de XHTML 1.1 DTD:
*****************************************************
Unhandled Exception: System.Net.WebException: The remote server
returned an erro
r: (404) Not Found.
at System.Net.HttpWebRequest.CheckFinalStatus()
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult
asyncResult)
at System.Net.HttpWebRequest.GetResponse()
at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri,
ICredentials crede
ntials)
at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials
credentials)
at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role,
Type ofO
bjectToReturn)
at System.Xml.Schema.DtdParser.HandlePERef()
at System.Xml.Schema.DtdParser.ParseDtdContent()
at System.Xml.Schema.DtdParser.ParseConditionalSect()
at System.Xml.Schema.DtdParser.ParseDtdContent()
at System.Xml.Schema.DtdParser.ParseConditionalSect()
at System.Xml.Schema.DtdParser.ParseDtdContent()
at System.Xml.Schema.DtdParser.ParseDocTypeDecl()
at System.Xml.Schema.DtdParser.Parse()
at System.Xml.XmlTextReader.ParseDtd(XmlScanner scanner)
at System.Xml.XmlTextReader.ParseTag()
at System.Xml.XmlTextReader.ParseRoot()
at System.Xml.XmlTextReader.Read()
at System.Xml.XmlValidatingReader.ReadWithCollectTextToken()
at System.Xml.XmlValidatingReader.Read()
at ValidatorTest.SimpleValidator.Main(String[] args) in
e:\flotspe\cs\visual
studio projects\validatortest\class1.cs:line 24
*****************************************************
Bij XHTML 1.1-validatie heeft dat ding al 3x een ParseDtdContent()
opgeroepen terwijl het bij een ongeldige URL al na de
ParseDocTypeDecl() misloopt.
Nu heb ik die XHTML 1.1 DTD (die gesplitst is in diverse bestanden)
eens bekeken en daar staan zowel absolute als relatieve URL's in
vermeld. Daarom is m'n huidige werkhypothese dat de validator de
bestanden met een relatieve URL niet kan vinden.
--
Joris "flotspe" Janssens *** http://inferno.xhtml.be/
gecontroleerd op virussen door m'n huisdokter
Re: [C# .NET] validating XHTML 1.1
Author: Joris Janssens
Date: Wed, 11 Aug 2004 13:01
Date: Wed, 11 Aug 2004 13:01
35 lines
2348 bytes
2348 bytes
Joris Janssens schreef op 10/08/2004 :
> Ik probeer XHTML 1.1-bestanden te laten valideren met behulp van
> XmlValidatingReader Maar ik krijg steeds een WebException "(404) Not Found"
Ik had de handleiding beter moeten lezen :-) Er moesten enkele
properties van de XmlTextReader op een bepaalde manier ingesteld worden
en dat had ik dus niet gedaan.
Alleen loopt de validatie zelf nu compleet fout en krijg ik bij elk
element dat ik in m'n XHTML 1.1-bestand gebruik, te horen dat het niet
gedeclareerd is 8-o
Dit is de nieuwe code BTW:
[STAThread]
static void Main(string[] args) {
string url="http://localhost:8080/dtd/test.xhtml";
XmlTextReader reader=new XmlTextReader(url);
reader.Normalization=true;
reader.XmlResolver=null;
XmlValidatingReader valReader=new XmlValidatingReader(reader);
valReader.ValidationEventHandler+=new
ValidationEventHandler(valHandler);
valReader.ValidationType = ValidationType.DTD;
while (valReader.Read()) {
}
valReader.Close();
}
Ik ga maar eens wat verder lezen :/
--
Joris "flotspe" Janssens *** http://inferno.xhtml.be/
m(28,23,Kempen) zkt v(20<=age<=35,20<=bmi<=25,Kempen)
Re: [C# .NET] validating XHTML 1.1
Author: Joris Janssens
Date: Wed, 11 Aug 2004 14:06
Date: Wed, 11 Aug 2004 14:06
51 lines
3450 bytes
3450 bytes
Joris Janssens formuleerde op dinsdag : > Ik probeer XHTML 1.1-bestanden te laten valideren met behulp van > XmlValidatingReader Maar ik krijg steeds een WebException "(404) Not Found" Het positieve nieuws is dat ik ondertussen weet waar het misloopt. Ik heb een nieuwe XmlUrlResolver gemaakt die toont met welke URL hij bezig is. Dit is de output: ********************************************* http://localhost:8080/dtd/test.xhtml http://localhost:8080/dtd/test.xhtml http://localhost:8080/dtd/test.xhtml http://localhost:8080/dtd/-//W3C//DTD%20XHTML%201.1//EN http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-notations-1.mod http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-qname-1.mod http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-events-1.mod http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-attribs-1.mod http://www.w3.org/TR/xhtml-modularization/DTD/xhtml11-model-1.mod Unhandled Exception: System.Net.WebException: The remote server returned an error: (404) Not Found. ********************************************* En <http://www.w3.org/TR/xhtml-modularization/DTD/xhtml11-model-1.mod> bestaat dus niet, dat moet <http://www.w3.org/TR/xhtml11/DTD/xhtml11-model-1.mod> zijn. <http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod> staat vermeld als een absolute URL in <http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd>. <xhtml-notations-1.mod> en de daarop volgende mods zijn dan weer relatieve URL's in <http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod>. <xhtml11-model-1.mod> is dan weer een relatieve URL in <http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd> maar in het programma wordt de BaseUri niet aangepast. Er zou dus gedetecteerd moeten worden wanneer <http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod> verlaten wordt en overeenkomstig de BaseUri aanpassen :-Z -- Joris "flotspe" Janssens *** http://inferno.xhtml.be/ The webmaster who says "ni"
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