[VB] XML & DTD -Validation

Hi,
I've got a problem.

Consider for a moment that there exists a URI to a DTD in an XML file. 
Not very uncommon. Now, what happens if the remote server owner go 
belly up and because of this the DTD vanishes? Will all XML docs of the 
same type be rendered useless?

If not, how do you tell VB to use a different DTD with an old document 
that already contains a URI to the DTD, _without_ altering the XML 
document?

It seems I can't tell VB to skip the validation step. Everything I've 
tried so far has failed. What I came up with was to delete the old URIs 
from the XML document and replace them with new ones. This works, but 
is an untidy way of doing it, and it makes the whole thing slower.

Any better ideas out there?

TIA
-- 
Pepi.
0
pepi5863 (3)
8/26/2007 5:34:13 PM
dotnet.xml 7266 articles. 0 followers. Follow

4 Replies
871 Views

Similar Articles

[PageSpeed] 41

Pepi wrote:

> Consider for a moment that there exists a URI to a DTD in an XML file. 
> Not very uncommon. Now, what happens if the remote server owner go 
> belly up and because of this the DTD vanishes? Will all XML docs of the 
> same type be rendered useless?
> 
> If not, how do you tell VB to use a different DTD with an old document 
> that already contains a URI to the DTD, _without_ altering the XML 
> document?

Use a custom XmlResolver that resolves the URI to a local copy of the DTD.
See the property XmlResolver 
<URL:http://msdn2.microsoft.com/en-us/library/System.Xml.XmlReaderSettings.XmlResolver.aspx> 
of XmlReaderSettings or the property XmlResolver 
<URL:http://msdn2.microsoft.com/en-us/library/System.Xml.XmlDocument.XmlResolver.aspx>
of XmlDocument.


-- 

	Martin Honnen --- MVP XML
	http://JavaScript.FAQTs.com/
0
mahotrash (1778)
8/27/2007 11:01:04 AM
On 27 aug 2007, Martin Honnen<mahotrash@yahoo.de>, had the following
to say to the folks in microsoft.public.dotnet.xml: 

> Use a custom XmlResolver that resolves the URI to a local copy of
> the DTD. See the property XmlResolver 
> <URL:http://msdn2.microsoft.com/en-us/library/System.Xml.XmlReaderS
> ettings.XmlResolver.aspx> of XmlReaderSettings or the property
> XmlResolver 
> <URL:http://msdn2.microsoft.com/en-us/library/System.Xml.XmlDocumen
> t.XmlResolver.aspx> of XmlDocument.

Thanks. :-)

I have to think about this though, since I can't get it to work with 
anything other than doc.XmlResolver = Nothing

I assume (from the speed it suddenly ran at) that nothing is validated. 
I can live with that, but it sure would be nice if it would use a local 
DTD.
-- 
Pepi.
0
pepi5863 (3)
8/27/2007 8:42:06 PM
Pepi wrote:

> I have to think about this though, since I can't get it to work with 
> anything other than doc.XmlResolver = Nothing
> 
> I assume (from the speed it suddenly ran at) that nothing is validated. 
> I can live with that, but it sure would be nice if it would use a local 
> DTD.

Then subclass XmlUrlResolver with a class that maps the system 
identifier of the URL to a local copy. Then use an instance of that 
class as doc.XmlResolver.


-- 

	Martin Honnen --- MVP XML
	http://JavaScript.FAQTs.com/
0
mahotrash (1778)
8/28/2007 10:46:22 AM
On 28 aug 2007, Martin Honnen<mahotrash@yahoo.de>, had the following
to say to the folks in microsoft.public.dotnet.xml: 

Thanks for your reply. I'm sorry I'm late with a response, but I've 
been away on a funeral.

> Then subclass XmlUrlResolver with a class that maps the system 
> identifier of the URL to a local copy. Then use an instance of
> that class as doc.XmlResolver.

Sorry, now you've lost me. That's Chinese to me. I only started using 
VB .NET about a month ago.

Here's what I have so far:

Dim doc as New XmlDocument
Dim Parts as XmlNodeList : Dim Part as XmlNode

Dim resolver As XmlUrlResolver = New XmlUrlResolver()
Dim myuri As New Uri("c:/temp/DTD/tss-1.9.dtd")

resolver.ResolveUri(myuri, "")
doc.XmlResolver = resolver
doc.Load(fInfo.CurrentFileName)

[...]

This doesn't work as I want it to, but I will try again later with 
some more ideas.

Thanks for your help.
-- 
Pepi.
0
pepi5863 (3)
9/2/2007 5:36:36 PM
Reply:

Similar Artilces:

Path of an XML node
Hi, how do I get the path of an XML node? I have: Dim xmlNo As XmlNode = xml.SelectSingleNode("//Category[@Id='" & CategoryID & "']") I want to get the path of the xmlNo: i.e. Categories\Video games\Nintendo 64\Games\ thanks, Bruno "The Clansman" <Not His Real Name> wrote in message news:ef7o91iXEHA.3972@TK2MSFTNGP12.phx.gbl... > I want to get the path of the xmlNo: > > i.e. > Categories\Video games\Nintendo 64\Games\ I take it there is a Categories node beneath Games that is the one you selected? (btw, element names ca...

VB distmon?
Hi I have recently installed Office 2003. A couple of wired things happen in Excel: > Everytime I close the program I get a MS VB error that reads "Compile error in hidden module: Distmon" Every time open the program I get the same error, but the macro it is calling is "autoexecnew" > Since my new installation, I type in an simple function like TRIM and it tells me cannot find project library. any ideas? Thnaks! Alan Alan http://support.microsoft.com/default.aspx?scid=kb;EN-US;q307410 OFF: "Compile Error in Hidden Module" Error Message When You Sta...

Excel VB
I have two cells in a workbook that are dates. The cell Start_Date has a valid date in it. The second cell Test_Date is either blank or has a valid date in it. The IsDate test on both cells works fine, however, on a blank cell the Month function extracts "12". Anyone know why? I had to put the month function within a test for IsDate to make it work. Seems like Month function on a blank cell should return something other than a 12. Dave Test code: If IsDate(Range("Start_Date")) Then 'Cell has 11/01/09 in it. MsgBox ("start date a d...

Cannot Add any window to VB
Hello: I'm using a VM with GP 10.0 SP3 installed. In order to have the same as our production databases i copy the GP folder, entirely, which i think it was a mistake now I'm getting a "This cannot be added to Visual Basic", whenever i try to add a window, any window, to VB. Also it goes without saying that there's a lot of load errors starting GP. For the record the copy/paste thing worked, sort of, and before you start thinking that i was insane to have done this, there's a reason behind it, There's been a lot of tweaks to our production server, by our p...

How to determine encoding of XML file ?
I need to read XML file, transform it and then save in the same encoding. XmlDocument class naturally has no encoding-related members. How can I determine encoding of XML file ? Oleg Subachev Oleg Subachev wrote: > I need to read XML file, transform it and then save in the same encoding. > XmlDocument class naturally has no encoding-related members. If the XML document has an XML declaration with an encoding specified then xmlDocument.FirstChild is the XmlDeclaration node and has a property named Encoding: XmlDocument xmlDocument = new XmlDocument(); xmlDocument.L...

vb from VC++
Hi, is it possible, and if so, to call a Vb macro from VC++. Or manipulate spreadsheets (ie draw graphs from the data within the workbooks) usinbg MFC functions cheers Anthony Presumably you are referring to MS Excel spreadsheets and workbooks. The easiest method would be to import the appropriate type library (.tlb) provided with Excel, having the class wizard generate the classes, which you then use to access the Excel Automation model (that is the same model that Excel VBA uses). Some investigation may be needed to determine which tlb to use, and to make sure you have a basic understand...

VB in Excel
In Excel I go into Visual Basic Editor, then Visual Basic Help, but when I type 'Passwords' for example it will bring up a list of related items, but some of them you can't select. Does this mean the installation CD is corrupt and hasn't installed all the components? I have reinstalled and repaired the installtion but to no avail. Any ideas anyone? Help! Thanks ...

How to present Many
This is a multi-part message in MIME format. ------=_NextPart_000_016B_01C394FE.03560940 Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: quoted-printable It's easy to present "One - Many" relationship in XML, but how to present "Many - Many" relationship in XML? ------=_NextPart_000_016B_01C394FE.03560940 Content-Type: text/html; charset="big5" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=3DContent-Type...

VB.Net program to create XML file
I need to create an xml file from a VB program using fields returned from an sql query. I have a template that was provided for me and need to use verbatim. Since this is just a text file, I gather that I can just write out the file with all of the tags, etc., and name it .xml. Assuming that is correct what I might want to do is create a template so that if this file changes the names of the elements, all I have to do is change the template and if more elements get added I can then add them. Is there a tool that can do this for me? If I have to create one, any suggestions as to what I ...

xml/xsl to create msbuild files........MSB4097......and an xsl workarounds(??)
<!-- The xml in question --> <?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="AllTargetsWrapper" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <!-- - - --> <Target Name="AllTargetsWrapper" xmlns=""> <Message Text="You just called the Target named 'AllTargetsWrapper'" /> </Target> <!-- - - --> <Target Name="Target1" xmlns=""> <Message Text="You just called the Target named '...

VB++ Exe zum Ansprechen einer VB ActiveX DLL
Hallo zusammen. Ich ben�tige eine EXE, welche in einer DOS-Box mit Parametern aufgerufen wird und das Ergebnis auch wieder in dieser DOS-Box zur�ckbringt. Mit VB ist dies leider nicht zu machen. Nun weiss ich zwar das dies mit einer VC++ Exe geht, bin aber leider C Neuling. Kann mir dazu jemand ein Beispiel posten ? Die C++ Exe soll einen auf der Commandozeile �bergebenen String (das sind die ganzen Parameter) an eine Funktion einer VB ActiveX DLL �bergeben. Das Ergebnis soll dann von der ActiveX DLL an die C++ Exe zur�ckgegeben werden und in der selben DOS-Box angezeigt werden. Hoffe es k...

VB Script
Hi all, I need a VB script code to verify whether a specific Local user ID on a remote machine, in workgroup, is having a specific password. For instance I need to check whether target machine consists a local user "DSADMIN" 's password set to "Pa55word". If the target machine consists this user account and the password is also correct then it should return TRUE else it should return FALSE (or something similar). Below code tries to reset the password on target machine by providing same old and new password, if it fails that means the password set on target...

Sumproduct in VB
I want to be able to use the sumproduct function in code to calculate some fairly complex formulas. Within the sumproduct function I'm trying to use a selection critera. The range "Wave" is a named range. This works fine in a regular worksheet function. It multiplies the cells in columns A and B where Wave = 2. =sumproduct(--(Wave=2),$A$1:$A$100,$B$1:$B$10) In VB I have the function below, which surprisingly works just fine as written. For now ignore X... Function mytest(X as Variant, rng1 as Variant, rng2 as Variant) as double mytest = Applicatio...

Best TreeListView control for showing hierarchical structures (like XML)
Trying to figure the best way to display a simple hierarchical structure with collapsible branches and checkboxes like a TreeView, but with data fields like a ListView. The objective is something like: [x] + Top_Cat [x] + Sub_level [ ] Leaf1 --- some data fields [x ] Leaf2 --- some more data fields (The [x] things represent checkboxes, pref tri-state) That would map directly to an XML file. I've seen a couple "TreeListView" projects on CodeProject (Rista, Seddon, Caudal, etc) but I thought maybe someone has had good luck with this...

XML as Ini file
Be gentle. I need the equivalent of an ini file or registry key in my program. Both are denigrated. So is using the app.config file to store run-time configuration values. Ok, fine. I'm thinking that the general solution (C#) is to read in the configuration file with XmlDocument and then navigate to the node of interest with XmlNavigator. Am I on the right path, so far? (More detailed questions later.) -- Rick Hi Rick, I have a C# helper class that lets me store options in an ini-file like structure but with XML. Maybe you can extract something for your special case. Here...

How can I read NTbackup BKF files using VB .Net pls?
Hello, I want to write a utility to extract files from backups in BKF format created by NTBackup. Does anyone know please if there are any libraries or built-in functions to open BKF files in VB .Net? Thanks, - Alan. Hello, I have the same problem Did you find any solution ? Thanks Pascal frmsrcurl: http://msgroups.net/microsoft.public.dotnet.languages.vb/How-can-I-read-NTbackup-BKF-files-using-VB-Net-pls ...

VB Macro to VB Application
I have a VB macro. I want to move it to a VB application, using my VS 2008. I don't know how to get the Application to run against an Excel Worksheet. Can someone help? Thanks "JCO" <someone@somewhere.com> wrote in message news:%23GDVlhxBLHA.4308@TK2MSFTNGP04.phx.gbl... >I have a VB macro. I want to move it to a VB application, using my VS >2008. If you mean a VBA macro then moving it to VB is usually pretty easy but VS 2008 is not VB, it is VB.Net, and that's a very different language. This group is for VB 6 and earlier versions and doesn...

Retreive emails Using MAPI in VB using Outlook 2003
Till outlook 2000 we had a way to retrieve emails by Reconfiguring Mail Support. Clicking the Corporate or Workgroup option you can download mails from a VB application automatically using MAPI and other Outlook objects without ever opening Outlook. This doesnot happen in Outlook 2003 and there is no option like this to set. Can any one please help me. Thanking you. John Supakin. Hi John, Outlook 2003 is already in "Corporate" mode, and MAPI subsystem is always installed even if you use Pop3/Smtp account only. MAPI spooler is integrated into Outlook 2002 / Outlook 2003 (it...

Performance indicator
Hi, I would appreciate someone's help on getting the following macro correct in the way I would like it to perform. I have a file which measures key elements for eg. Revenue, net etc... What the macro does - Plan/Budget figures for the full year are mentioned in Col D. Actual figures are entered in col DE, DF, and DG titled Jan., Feb., and Mar., The Actual figures are added in Col DC titled YTD (performed by the Macro). The Actual figures are annualised and compared to Plan. A horizontal bar is created either in Green, Yellow or Red depending on the performance. A vertical line showin...

VB Drag and Drop in DataGridView?
All, Pardon the cross-post. I've used other (C#) code snippets found around here to try to implement drag-n-drop in a DataGridView, to give the user a way to sort the data in the grid. I'm mostly there - I am able to drag, see the cursor change to drag, and when I let go, the row I dragged leaves it's original spot. Problem is, it "drops" into a black hole. Here's the line I'm trying to "drop" with; TBL_TimersDataGridView.Rows.Insert(RowIndexOfItemUnderMouseToDrop, RowToMove) The full code is below. Can anyone tell me what I...

XML serialization of custom collection class in VB
I have a custom collection ... clFile that INHERITS from NameObjectCollectionBase the problem is, when I try to create an xmlserializer instance i get an error You must implement a default accessor on brWAP.clFile because it inherits from ICollectio I must be having a thick day because I dont have a clue what the error message means. (I have written a defaut property called ITEM in the clFile class 'Classes to abstract a FILE entity that is persisted in the databas Imports System.Xml.Serializatio Imports dalWAP.dalWA 'A worker class to get the data from the Database and save it b...

syntax question
Given the following code (found on this site..) With ActiveSheet.Range("B:B") Set FoundCell = .Find(what:="whatever", _ after:=.Cells(.Cells.Count), _ LookIn:=xlFormulas, LookAt:=xlPart, _ SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False) End With How do I tell VB to look in Cell H1 for the what:="whatever" ? ie. I want to use the value found in the Cell H1 not the text "whatever" I've tried every co...

XML generating excel charts
Hi, I have an ASP webapplication that exports a dataset to an excel workbook via XML. My question is if it would be possible to write XML-code that automatically draws charts in Excel based on the data exported. Let's say I have one DataTable with 2 columns. Then I want to export the raw data to sheet1 in excel while sheet2 plots the data from sheet1 only using the supplied XML code. What you want to do is to put the data into a workbook that has a template with a chart already setup and posibly has a macro already built into the workbook. XML data is really ascii...

While in excel calling VB (ALT+F11) & the VB Help (F1) to do a search
Hey guys, I seemed to be stumped by something one of my users notice while in the help file. When we go to "Index" and the do a keywor search for "database" for example, it brings down a list of 143 topic to choose from. The problem is that out of the 143 topics listed, i you click on many of them no information pops up on the right hand sid of the window. Examples of topics that don't work are "CreateRelatio Method", "ReplicaID Property", "RegisterDatabase Method", "Valu Property", "TableDefs Collection", etc. etc. Has ...

Outlook 2003
I'm using an Access Database to send out notices to customers about orders processing. However, when I initiate this, it has created an error with the new Office 2003 about the command "item.send" in Visual Basic. I'm not a programming 'guru', so I don't know how to by-pass this message. Otherwise I have to hit the YES button like 500+ times a day...and that's just not feasible. Does anyone know a method around this through Outlook? Chuck Since you didn't post the original message, we have no idea what problem you are having. When replying to ...