ID Artikel: 317611 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0

BUG: Ketik "###" tidak menyatakan rujukan kepada lokal jenis file XSD skema yang disertakan

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

GEJALA

Pelaksanaannya saat ini XSD skema-validasi dukungan dalam.NET framework tidak mengkonversi targerNamespace lokal referensi jenis termasuk XSD (tidak mendukung "Bunglon" termasuk). Sebagai contoh, berkas a.xsd berikut termasuk b.xsd dan c.xsd file:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 	targetNamespace="test">

	<xsd:include schemaLocation="b.xsd" />
	<xsd:include schemaLocation="c.xsd" />
</xsd:schema>
				
Dalam b.xsd, sejenis testType didefinisikan:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
	<xsd:simpleType name="testType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="test"/>
		</xsd:restriction>
	</xsd:simpleType>
</xsd:schema>
				
Dalam c.xsd, tes dinyatakan dengan tipe testType:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
	<xsd:element name="test" type="testType"/>             <!-- this fails, but it should not fail -->
</xsd:schema>
				
Pesan galat berikut kembali dengan skema a.xsd file:
"Tipe 'testType' tidak dinyatakan." dalam c.xsd

PEMECAHAN MASALAH

Untuk mengatasi masalah ini, tambahkan xmlns = "test" namespace Deklarasi untuk file c.xsd, misalnya:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="test">
	<xsd:element name="test" type="testType" xmlns="test"/>              
</xsd:schema>
				

STATUS

Microsoft telah mengkonfirmasi bahwa ini adalah bug di Microsoft produk yang didaftar pada awal artikel ini.

INFORMASI LEBIH LANJUT

Langkah-langkah untuk Mereproduksi Masalah

  1. Simpan file a.xsd sebelumnya dalam c:\temp folder. Simpan b.xsd dan c.xsd file di bawah folder yang sama sebagai a.xsd.
  2. Membuat C# konsol proyek.
  3. Mengganti kode di dalam berkas Class1.cs dengan kode berikut:
    using System;
    using System.IO;
    using System.Xml;
    using System.Xml.Schema;
    
    namespace ValidationTest
    {
    	class Sample
    	{
    		public static void Main()
    		{
    			try
    			{
    				XmlSchemaCollection sc = new XmlSchemaCollection();
    				sc.Add("test", "c:\\temp\\a.xsd");
                                    Console.WriteLine("No Schema error.");			
    			}
    			catch(XmlSchemaException ex)
    			{
    				Console.WriteLine("XSD schema Error: {0}", ex.Message);
    			}
    			
    			Console.Read();
    		}
    	}
    }
    					
  4. Mengkompilasi dan kemudian menjalankan proyek. Di jendela konsol, pesan galat berikut akan dikirim:
    Skema XSD Kesalahan: Jenis 'test' tidak dinyatakan. Terjadi kesalahan pada file:///c:/temp/c.xsd(2, 3).
  5. Buka c.xsd file, dan kemudian tambahkan xmlns = "test" untuk xsd:Element, sebagai contoh:
    <xsd:element name="test" type="test" xmlns="test"/>
    					
  6. Mengkompilasi dan kemudian menjalankan proyek. Di jendela konsol, output berikut kembali:
    Skema tidak ada kesalahan.

Berlaku bagi:
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Studio .NET 2003 Professional Edition
Kata kunci: 
kbvs2002sp1sweep kbbug kbenv kbmt KB317611 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:317611  (http://support.microsoft.com/kb/317611/en-us/ )