Missing Tag <?xml version="1.0" encoding="ISO-8859-1" ?> in my XML output file

Posted on 2009-07-16
Medium Priority
Last Modified: 2012-05-07
On my web page, a button generates an XML file (on click) whose data comes from SQL server. This XML file output is to be used as an import file to a legacy system. XML file is generated without dramas but the problem is that the tag <?xml version="1.0" encoding="ISO-8859-1" ?> is not included on the top of the XMl file, this tag is needed by the recievning application.

I'm practically out of clue as to where or what i missed. Can anyone help me understand and suggest a fix on my problem?

Here is the event on my webpage. And on the snippet is my XSL template...

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Using conn As New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("CENTRIS_SMIConnectionString").ConnectionString)
            Dim cmd As New Data.SqlClient.SqlCommand("SMI_P001_XML_Download", conn)
            cmd.CommandType = Data.CommandType.StoredProcedure
            'Add parameters (NationalUPN) selected from form for WHERE clause
            cmd.Parameters.Add("@NationalUPN", Data.SqlDbType.VarChar)
            cmd.Parameters("@NationalUPN").Value = DropDownList2.SelectedValue.ToString

            'Add parameters (AcademicYear) selected from form for WHERE clause
            cmd.Parameters.Add("@AcademicYear", Data.SqlDbType.Int)
            cmd.Parameters("@AcademicYear").Value = DropDownList3.SelectedValue.ToString

            'Add parameters (SchoolDestination) selected from form for WHERE clause
            cmd.Parameters.Add("@SchoolDest", Data.SqlDbType.Int)
            cmd.Parameters("@SchoolDest").Value = DropDownList1.SelectedValue.ToString

            Dim da As New Data.SqlClient.SqlDataAdapter(cmd)
            Dim ds As New Data.DataSet
            Dim nowString As String = Now.ToString("dd-MM-yyyy hh.mm.ss")
            Dim fileName As String = "D:\TEMP\000LLL_CTF_SMI_" & nowString & ".xml"
            'Dim fileName As String = "C:\Documents and Settings\jackson.suanque.NTSCHOOLS\Desktop\MySMIStudentTrackerExport_" & nowString & ".xml"
            Dim doc As System.Xml.XmlDataDocument = New System.Xml.XmlDataDocument(ds)
            Dim transform As New System.Xml.Xsl.XslCompiledTransform()
            Dim writer As System.Xml.XmlTextWriter = New System.Xml.XmlTextWriter(fileName, System.Text.Encoding.UTF8)
            writer.Formatting = System.Xml.Formatting.Indented
            writer.Indentation = 2
            transform.Transform(doc, Nothing, writer)
        End Using
    End Sub

<?xml version="1.0" standalone="yes" ?> 
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" indent="yes" encoding="ISO-8859-1" omit-xml-declaration="no" /> 
- <xsl:template match="/">
- <CTfile>
  <xsl:call-template name="callHeader" /> 
  <xsl:call-template name="callCTFpupilData" /> 
- <xsl:template name="callHeader">
- <Header>
- <DocumentName>
  <xsl:value-of select="/NewDataSet/Table/DocumentName" /> 
- <CTFversion>
  <xsl:value-of select="/NewDataSet/Table/CTFversion" /> 
- <DateTime>
  <xsl:value-of select="/NewDataSet/Table/DateTime" /> 
- <DocumentQualifier>
  <xsl:value-of select="/NewDataSet/Table/DocumentQualifier" /> 
- <SupplierID>
  <xsl:value-of select="/NewDataSet/Table/SupplierID" /> 
  <xsl:call-template name="callSourceSchool" /> 
  <xsl:call-template name="callDestSchool" /> 
- <xsl:template name="callSourceSchool">
- <SourceSchool>
- <LEA>
  <xsl:value-of select="/NewDataSet/Table/SchoolSourceLEACode" /> 
- <Estab>
  <xsl:value-of select="/NewDataSet/Table/SourceSchoolEstablishmentCode" /> 
- <SchoolName>
  <xsl:value-of select="/NewDataSet/Table/SchoolName" /> 
- <AcademicYear>
  <xsl:value-of select="/NewDataSet/Table/AcademicYear" /> 
- <xsl:template name="callDestSchool">
- <DestSchool>
- <LEA>
  <xsl:value-of select="/NewDataSet/Table/DestLEA" /> 
- <Estab>
  <xsl:value-of select="/NewDataSet/Table/DestEstab" /> 
- <xsl:template name="callCTFpupilData">
- <CTFpupilData>
  <xsl:call-template name="callPupil" /> 
- <xsl:template name="callPupil">
- <Pupil>
- <UPN>
  <xsl:value-of select="/NewDataSet/Table/NationalUPN" /> 
- <Surname>
  <xsl:value-of select="/NewDataSet/Table/LegalSurname" /> 
- <ForeName>
  <xsl:value-of select="/NewDataSet/Table/Firstname" /> 
- <DOB>
  <xsl:value-of select="/NewDataSet/Table/DOB" /> 
- <Gender>
  <xsl:value-of select="/NewDataSet/Table/Sex" /> 
  <xsl:call-template name="callBasicDetails" /> 
  <xsl:call-template name="callAddress" /> 
- <xsl:template name="callBasicDetails">
- <BasicDetails>
- <FormerUPN>
  <xsl:value-of select="/NewDataSet/Table/PreviousNationalUPN" /> 
- <PreferredSurname>
  <xsl:value-of select="/NewDataSet/Table/Surname" /> 
- <PreferredForename>
  <xsl:value-of select="/NewDataSet/Table/OtherNames" /> 
- <NCYearActual>
  <xsl:value-of select="/NewDataSet/Table/NCYearActual" /> 
- <Ethnicity>
  <xsl:value-of select="/NewDataSet/Table/Ethnicity" /> 
- <EthnicitySource>
  <xsl:value-of select="/NewDataSet/Table/EthnicitySource" /> 
  <xsl:call-template name="callLanguages" /> 
- <FSMEligible>
  <xsl:value-of select="/NewDataSet/Table/FSMeligible" /> 
- <MedicalFlag>
  <xsl:value-of select="/NewDataSet/Table/MedicalFlagQualifier" /> 
- <EnrolStatus>
  <xsl:value-of select="/NewDataSet/Table/EnrolStatus" /> 
- <Statemented>
  <xsl:value-of select="/NewDataSet/Table/SENStatemented" /> 
- <xsl:template name="callLanguages">
- <Languages>
- <Type>
- <LanguageQualifier>
  <xsl:value-of select="/NewDataSet/Table/LanguageQualifier" /> 
- <Language>
  <xsl:value-of select="/NewDataSet/Table/Language" /> 
- <xsl:template name="callAddress">
- <Address>
- <AddressLines>
- <Line1>
  <xsl:value-of select="/NewDataSet/Table/AddressLine1" /> 
- <Line2>
  <xsl:value-of select="/NewDataSet/Table/AddressLine2" /> 
- <Line3>
  <xsl:value-of select="/NewDataSet/Table/AddressLine3" /> 
- <Line4>
  <xsl:value-of select="/NewDataSet/Table/Town" /> 
- <Line5>
  <xsl:value-of select="/NewDataSet/Table/County" /> 
- <Postcode>
  <xsl:value-of select="/NewDataSet/Table/PostCode" /> 

Open in new window

Question by:jsuanque
  • 3

Accepted Solution

DelTreme earned 1000 total points
ID: 24869655
In this line:

Dim writer As System.Xml.XmlTextWriter = New System.Xml.XmlTextWriter(fileName, System.Text.Encoding.UTF8)

You create a TextWriter using the UTF8 encoding. Try this one instead:

Dim writer As System.Xml.XmlTextWriter = New System.Xml.XmlTextWriter(fileName, System.Text.Encoding.GetEncoding(1252))

That should at least output the data in Latin-1 (ISO-8859-1).

Author Comment

ID: 24874405
Hello DelTreme,

Tried your suggestion but that doesn't work.

Author Comment

ID: 24947225
Found it. I just added ...
in the code and Voila.

Author Closing Comment

ID: 31604220
Thanks though it didn't fix my problem immediately but it certainly did guide me where to look for the issue.

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Create a Windows 10 custom Image with custom task bar and custom start menu using XML for deployment.
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…
Free Data Recovery software is an advanced solution from Kernel Tools to recover data and files such as documents, emails, database, media and pictures, etc. It supports recovery from physical & logical drive after a hard disk crash, accidental/inte…

607 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question