Google Groups Home
Help | Sign in
Big picture questions - cleanest method for creating an XML file
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  17 messages - Collapse all
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
B. Chernick  
View profile
 More options Jun 30, 4:45 pm
Newsgroups: microsoft.public.dotnet.xml
From: B. Chernick <BChern...@discussions.microsoft.com>
Date: Mon, 30 Jun 2008 13:45:00 -0700
Subject: Big picture questions - cleanest method for creating an XML file
I am not accustomed to creating xml files programmatically.  The big picture
is this: This will be in VB/VS 2005/ winforms.  I have a DTD, a sample XML,
and an outside data source I will use to populate the XML.  In general I
think I know how to create elements and attributes and I'm sure I can hack
something together but I'm wondering if I'm missing (or forgetting) a better
way (other than a long line of hard-coded CreateElement commands).  
Suggestions please.

-----

A related problem: the XML header, for lack of a better term.  If we assume
creation of an XmlDocument object from scratch, how do I add the header
elements?  I cannot find any discussion of this.  (Feel free to correct my
terminology.)

This is what I'm referring to -

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE SOME TEXT "DTDName.dtd">
<?xml-stylesheet href="SampleXml.xslt" type="text/xsl" ?>


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Joe Fawcett  
View profile
 More options Jul 1, 5:24 am
Newsgroups: microsoft.public.dotnet.xml
From: "Joe Fawcett" <joefawc...@newsgroup.nospam>
Date: Tue, 1 Jul 2008 10:24:37 +0100
Local: Tues, Jul 1 2008 5:24 am
Subject: Re: Big picture questions - cleanest method for creating an XML file
As to the header you shouldn't need to add it. It is created when the
document is serialised and isn't always needed, it depends on the encoding
used.
I agree that creating documents by dozens of CreateXXX statements is not
nice.
How changeable are the documents. I often start with a template, either a
string constant, in a resource file or an actual file and load this first.
Then I alter it as needed.

--

Joe Fawcett (MVP - XML)

http://joe.fawcett.name

"B. Chernick" <BChern...@discussions.microsoft.com> wrote in message

news:D332B170-4DDF-4D4B-9F8E-A4B233E7C652@microsoft.com...


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Martin Honnen  
View profile
 More options Jul 1, 8:21 am
Newsgroups: microsoft.public.dotnet.xml
From: Martin Honnen <mahotr...@yahoo.de>
Date: Tue, 01 Jul 2008 14:21:05 +0200
Local: Tues, Jul 1 2008 8:21 am
Subject: Re: Big picture questions - cleanest method for creating an XML file

B. Chernick wrote:
> I am not accustomed to creating xml files programmatically.  The big picture
> is this: This will be in VB/VS 2005/ winforms.  I have a DTD, a sample XML,
> and an outside data source I will use to populate the XML.  In general I
> think I know how to create elements and attributes and I'm sure I can hack
> something together but I'm wondering if I'm missing (or forgetting) a better
> way (other than a long line of hard-coded CreateElement commands).  
> Suggestions please.

If you convert the DTD into a schema then you can use XML
serialization/deserialization:
http://msdn.microsoft.com/en-us/library/90c86ass(VS.80).aspx
You can use the xsd.exe tool to create .NET classes from the schema.

If you have relational data then you can also consider to populate a
DataSet and use its WriteXml method.

> This is what I'm referring to -

> <?xml version="1.0" encoding="utf-8" ?>

That is the XML declaration, it is created by the WriteStartDocument
method of XmlWriter
http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.writesta...
or using CreateXmlDeclaration
http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.create...
in the DOM model.

> <!DOCTYPE SOME TEXT "DTDName.dtd">

That is a document type declaration, created using WriteDocType
http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.writedoc...
of XmlWriter or using CreateDocumentType
http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.create...
method of XmlDocument.

> <?xml-stylesheet href="SampleXml.xslt" type="text/xsl" ?>

That is a a processing instruction with the name 'xml-stylesheet' and
the data 'href="SampleXml.xslt" type="text/xsl"' so you create it using
WriteProcessingInstruction of XmlWriter
http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.writepro...
or using CreateProcessingInstruction
http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.create...
of XmlDocument.

--

        Martin Honnen --- MVP XML
        http://JavaScript.FAQTs.com/


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Big picture questions - cleanest method for creating an XML fi" by B. Chernick
B. Chernick  
View profile
 More options Jul 1, 8:45 am
Newsgroups: microsoft.public.dotnet.xml
From: B. Chernick <BChern...@discussions.microsoft.com>
Date: Tue, 1 Jul 2008 05:45:02 -0700
Local: Tues, Jul 1 2008 8:45 am
Subject: Re: Big picture questions - cleanest method for creating an XML fi
I don't mean to be rude but I'm afraid I didn't understand much your reply.  

This, so far as I know, is not a standard Dot Net situation. The purpose of
the program, if it ever gets written, is to extract data from an Excel
spreadsheet and plug it into a standalone XML file.   I'm afraid I've been
given very little of the big picture.  I think it eventually gets fed into
some mainframe system.


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
B. Chernick  
View profile
 More options Jul 1, 8:50 am
Newsgroups: microsoft.public.dotnet.xml
From: B. Chernick <BChern...@discussions.microsoft.com>
Date: Tue, 1 Jul 2008 05:50:00 -0700
Subject: Re: Big picture questions - cleanest method for creating an XML fi
Thanks for your response.  I think you may have answered several other
questions I've been wondering about.  However in this particular situation, I
don't believe converting the DTD to an xsd is an option.  The output has to
go to some legacy system that I don't have control over (so far as I know).

(I would have to translate the DTD manually, right?  There's no wizard or
utility for such a conversion?   If I am not mistaken, DTDs obsolete and
there's little or no support for them in Dot Net?)


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Martin Honnen  
View profile
 More options Jul 1, 9:10 am
Newsgroups: microsoft.public.dotnet.xml
From: Martin Honnen <mahotr...@yahoo.de>
Date: Tue, 01 Jul 2008 15:10:37 +0200
Local: Tues, Jul 1 2008 9:10 am
Subject: Re: Big picture questions - cleanest method for creating an XML fi

B. Chernick wrote:
> (I would have to translate the DTD manually, right?  There's no wizard or
> utility for such a conversion?   If I am not mistaken, DTDs obsolete and
> there's little or no support for them in Dot Net?)

There are tools like Xml editors
(http://www.stylusstudio.com/dtd/convert_dtd_to_schema.html) or Trang
(http://www.thaiopensource.com/relaxng/trang.html) that can translate a
DTD to a W3C schema.

As for .NET, it has support for validating an XML document against a DTD
but besides that its API are pretty much focussed on W3C XML schemas.

--

        Martin Honnen --- MVP XML
        http://JavaScript.FAQTs.com/


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
B. Chernick  
View profile
 More options Jul 1, 10:30 am
Newsgroups: microsoft.public.dotnet.xml
From: B. Chernick <BChern...@discussions.microsoft.com>
Date: Tue, 1 Jul 2008 07:30:02 -0700
Local: Tues, Jul 1 2008 10:30 am
Subject: Re: Big picture questions - cleanest method for creating an XML fi
> As for .NET, it has support for validating an XML document against a DTD
> but besides that its API are pretty much focussed on W3C XML schemas.

Pretty much as I suspected.  Getting approval for 3rd party tools is
problematic as well, especially for adhoc projects. :-)

On an earlier point, the use of WriteDocType, I am ready to tear my hair
out.  I have this code and I cannot get it to work.  I keep getting the error
'The '' character, hexiadecimal value 0x20, cannot be included in a name.'  
Frankly I'm out of my league here.  I cannot find any reference for the error
or WriteDocType that I can understand.  Here's my test code:

 Dim w As XmlWriter = XmlWriter.Create("Out.xml")
 w.WriteStartDocument()
 w.WriteDocType("SOME TEXT", Nothing, Nothing, "DTDName.dtd")
 w.Close()

I've tried a number of variations on that including """DTDName.dtd""".  What
do I have to do to get this one simple line of xml out to the file?  
<!DOCTYPE SOME TEXT "DTDName.dtd">

Thanks


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Martin Honnen  
View profile
 More options Jul 1, 10:47 am
Newsgroups: microsoft.public.dotnet.xml
From: Martin Honnen <mahotr...@yahoo.de>
Date: Tue, 01 Jul 2008 16:47:07 +0200
Local: Tues, Jul 1 2008 10:47 am
Subject: Re: Big picture questions - cleanest method for creating an XML fi

B. Chernick wrote:
>  Dim w As XmlWriter = XmlWriter.Create("Out.xml")
>  w.WriteStartDocument()
>  w.WriteDocType("SOME TEXT", Nothing, Nothing, "DTDName.dtd")

Well the first argument is the root element name and an element name is
not allowed to contain a space so you need to decide which root element
name you want (e.g. "some-name" or "some_name") and write that out. You
can't use "SOME TEXT" as the space is not allowed.

--

        Martin Honnen --- MVP XML
        http://JavaScript.FAQTs.com/


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
B. Chernick  
View profile
 More options Jul 1, 11:17 am
Newsgroups: microsoft.public.dotnet.xml
From: B. Chernick <BChern...@discussions.microsoft.com>
Date: Tue, 1 Jul 2008 08:17:01 -0700
Local: Tues, Jul 1 2008 11:17 am
Subject: Re: Big picture questions - cleanest method for creating an XML fi
The actual sample xml I was originally given has a line of:

<!DOCTYPE BDD SYSTEM "EAI.dtd">

Are you saying that this violates XML standards in general?

(Actually I should explain that for some reason I was convinced that the
last parm of the line was the problem.  I didn't realize it was the first.  
This works:         w.WriteDocType("BDD-SYSTEM", Nothing, Nothing, "EAI.dtd")

but results in <!DOCTYPE BDD-SYSTEM [EAI.dtd]>    Why the brackets and is
there any way to get rid of them?)


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Martin Honnen  
View profile
 More options Jul 1, 12:15 pm
Newsgroups: microsoft.public.dotnet.xml
From: Martin Honnen <mahotr...@yahoo.de>
Date: Tue, 01 Jul 2008 18:15:44 +0200
Local: Tues, Jul 1 2008 12:15 pm
Subject: Re: Big picture questions - cleanest method for creating an XML fi

B. Chernick wrote:
> The actual sample xml I was originally given has a line of:

> <!DOCTYPE BDD SYSTEM "EAI.dtd">

> Are you saying that this violates XML standards in general?

No, it does not. The "BDD" is the root element name and "EAI.dtd" is the
system identifier.

> (Actually I should explain that for some reason I was convinced that the
> last parm of the line was the problem.  I didn't realize it was the first.  
> This works:         w.WriteDocType("BDD-SYSTEM", Nothing, Nothing, "EAI.dtd")

> but results in <!DOCTYPE BDD-SYSTEM [EAI.dtd]>    Why the brackets and is
> there any way to get rid of them?)

Use
   w.WriteDocType("BDD", Nothing, "EAI.dtd", Nothing)
to produce the line you posted above. The "SYSTEM" string will be
automatically added as you pass in a third argument string, the system
identifier.
See also the online documentation
http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.writedoc...
or your local MSDN copy which explains the four arguments.

--

        Martin Honnen --- MVP XML
        http://JavaScript.FAQTs.com/


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Joe Fawcett  
View profile
 More options Jul 1, 12:28 pm
Newsgroups: microsoft.public.dotnet.xml
From: "Joe Fawcett" <joefawc...@newsgroup.nospam>
Date: Tue, 1 Jul 2008 17:28:05 +0100