Solved

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

Posted on 2009-07-16
4
1,632 Views
Last Modified: 2012-05-07
Hi,
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
            conn.Open()
            '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
            da.Fill(ds)
            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"
            ds.WriteXml(fileName)
            Dim doc As System.Xml.XmlDataDocument = New System.Xml.XmlDataDocument(ds)
            Dim transform As New System.Xml.Xsl.XslCompiledTransform()
            transform.Load("D:\Inetpub\wwwroot\WebSite2\SMI_Tracker_Download2.xsl")
            'transform.Load(Server.MapPath("SMI_Tracker_Download1.xsl"))
            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" /> 
  </CTfile>
  </xsl:template>
- <xsl:template name="callHeader">
- <Header>
- <DocumentName>
  <xsl:value-of select="/NewDataSet/Table/DocumentName" /> 
  </DocumentName>
- <CTFversion>
  <xsl:value-of select="/NewDataSet/Table/CTFversion" /> 
  </CTFversion>
- <DateTime>
  <xsl:value-of select="/NewDataSet/Table/DateTime" /> 
  </DateTime>
- <DocumentQualifier>
  <xsl:value-of select="/NewDataSet/Table/DocumentQualifier" /> 
  </DocumentQualifier>
- <SupplierID>
  <xsl:value-of select="/NewDataSet/Table/SupplierID" /> 
  </SupplierID>
  <xsl:call-template name="callSourceSchool" /> 
  <xsl:call-template name="callDestSchool" /> 
  </Header>
  </xsl:template>
- <xsl:template name="callSourceSchool">
- <SourceSchool>
- <LEA>
  <xsl:value-of select="/NewDataSet/Table/SchoolSourceLEACode" /> 
  </LEA>
- <Estab>
  <xsl:value-of select="/NewDataSet/Table/SourceSchoolEstablishmentCode" /> 
  </Estab>
- <SchoolName>
  <xsl:value-of select="/NewDataSet/Table/SchoolName" /> 
  </SchoolName>
- <AcademicYear>
  <xsl:value-of select="/NewDataSet/Table/AcademicYear" /> 
  </AcademicYear>
  </SourceSchool>
  </xsl:template>
- <xsl:template name="callDestSchool">
- <DestSchool>
- <LEA>
  <xsl:value-of select="/NewDataSet/Table/DestLEA" /> 
  </LEA>
- <Estab>
  <xsl:value-of select="/NewDataSet/Table/DestEstab" /> 
  </Estab>
  </DestSchool>
  </xsl:template>
- <xsl:template name="callCTFpupilData">
- <CTFpupilData>
  <xsl:call-template name="callPupil" /> 
  </CTFpupilData>
  </xsl:template>
- <xsl:template name="callPupil">
- <Pupil>
- <UPN>
  <xsl:value-of select="/NewDataSet/Table/NationalUPN" /> 
  </UPN>
- <Surname>
  <xsl:value-of select="/NewDataSet/Table/LegalSurname" /> 
  </Surname>
- <ForeName>
  <xsl:value-of select="/NewDataSet/Table/Firstname" /> 
  </ForeName>
- <DOB>
  <xsl:value-of select="/NewDataSet/Table/DOB" /> 
  </DOB>
- <Gender>
  <xsl:value-of select="/NewDataSet/Table/Sex" /> 
  </Gender>
  <xsl:call-template name="callBasicDetails" /> 
  <xsl:call-template name="callAddress" /> 
  </Pupil>
  </xsl:template>
- <xsl:template name="callBasicDetails">
- <BasicDetails>
- <FormerUPN>
  <xsl:value-of select="/NewDataSet/Table/PreviousNationalUPN" /> 
  </FormerUPN>
- <PreferredSurname>
  <xsl:value-of select="/NewDataSet/Table/Surname" /> 
  </PreferredSurname>
- <PreferredForename>
  <xsl:value-of select="/NewDataSet/Table/OtherNames" /> 
  </PreferredForename>
- <NCYearActual>
  <xsl:value-of select="/NewDataSet/Table/NCYearActual" /> 
  </NCYearActual>
- <Ethnicity>
  <xsl:value-of select="/NewDataSet/Table/Ethnicity" /> 
  </Ethnicity>
- <EthnicitySource>
  <xsl:value-of select="/NewDataSet/Table/EthnicitySource" /> 
  </EthnicitySource>
  <xsl:call-template name="callLanguages" /> 
- <FSMEligible>
  <xsl:value-of select="/NewDataSet/Table/FSMeligible" /> 
  </FSMEligible>
- <MedicalFlag>
  <xsl:value-of select="/NewDataSet/Table/MedicalFlagQualifier" /> 
  </MedicalFlag>
- <EnrolStatus>
  <xsl:value-of select="/NewDataSet/Table/EnrolStatus" /> 
  </EnrolStatus>
- <Statemented>
  <xsl:value-of select="/NewDataSet/Table/SENStatemented" /> 
  </Statemented>
  </BasicDetails>
  </xsl:template>
- <xsl:template name="callLanguages">
- <Languages>
- <Type>
- <LanguageQualifier>
  <xsl:value-of select="/NewDataSet/Table/LanguageQualifier" /> 
  </LanguageQualifier>
- <Language>
  <xsl:value-of select="/NewDataSet/Table/Language" /> 
  </Language>
  </Type>
  </Languages>
  </xsl:template>
- <xsl:template name="callAddress">
- <Address>
- <AddressLines>
- <Line1>
  <xsl:value-of select="/NewDataSet/Table/AddressLine1" /> 
  </Line1>
- <Line2>
  <xsl:value-of select="/NewDataSet/Table/AddressLine2" /> 
  </Line2>
- <Line3>
  <xsl:value-of select="/NewDataSet/Table/AddressLine3" /> 
  </Line3>
- <Line4>
  <xsl:value-of select="/NewDataSet/Table/Town" /> 
  </Line4>
- <Line5>
  <xsl:value-of select="/NewDataSet/Table/County" /> 
  </Line5>
- <Postcode>
  <xsl:value-of select="/NewDataSet/Table/PostCode" /> 
  </Postcode>
  </AddressLines>
  </Address>
  </xsl:template>
  </xsl:stylesheet>

Open in new window

0
Comment
Question by:jsuanque
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
4 Comments
 
LVL 3

Accepted Solution

by:
DelTreme earned 250 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).
0
 

Author Comment

by:jsuanque
ID: 24874405
Hello DelTreme,

Tried your suggestion but that doesn't work.
0
 

Author Comment

by:jsuanque
ID: 24947225
Found it. I just added ...
            writer.WriteStartDocument()
in the code and Voila.
0
 

Author Closing Comment

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

Featured Post

Increase Agility with Enabled Toolchains

Connect your existing build, deployment, management, monitoring, and collaboration platforms. From Puppet to Chef, HipChat to Slack, ServiceNow to JIRA, Splunk to New Relic and beyond, hand off data between systems to engage the right people.

Connect with xMatters.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article shows how to use the open source plupload control to upload multiple images. The images are resized on the client side before uploading and the upload is done in chunks. Background I had to provide a way for user…
The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
Come and listen to Percona CEO Peter Zaitsev discuss what’s new in Percona open source software, including Percona Server for MySQL (https://www.percona.com/software/mysql-database/percona-server) and MongoDB (https://www.percona.com/software/mongo-…
Michael from AdRem Software outlines event notifications and Automatic Corrective Actions in network monitoring. Automatic Corrective Actions are scripts, which can automatically run upon discovery of a certain undesirable condition in your network.…

696 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