Belge düzeyinde özelleştirmelerde XML şemaları ve verileri

Önemli Microsoft Word ile ilgili olarak bu konu başlığında belirtilen bilgiler, microsoft'un özel XML ile ilgili belirli işlevlerin uygulanmasını kaldırdığı Ocak 2010'dan önce Microsoft tarafından lisanslanan Microsoft Word ürünlerini Birleşik Devletler ve bölgeleri dışında ya da üzerinde çalışan programları kullanan veya geliştiren kişilerin ve kuruluşların yararına ve kullanımına yöneliktir microsoft word'den. Microsoft Word ile ilgili bu bilgiler, 10 Ocak 2010 tarihinden sonra Microsoft tarafından lisanslanan Microsoft Word ürünlerini kullanan veya üzerinde çalışan programlar geliştiren Birleşik Devletler veya bölgelerindeki kişiler veya kuruluşlar tarafından okunamaz veya kullanılamaz; söz konusu ürünler, bu tarihten önce lisanslanan veya Birleşik Devletler.

Şunlar için geçerlidir: Bu konudaki bilgiler Excel ve Word için belge düzeyi projeleri için geçerlidir. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.

Microsoft Office Excel ve Microsoft Office Word, şemaları belgelerinize eşleme özelliği sağlar. Bu özellik, XML verilerinin belge içinde ve dışında içeri ve dışarı aktarılmasını basitleştirebilir.

Visual Studio, belge düzeyi özelleştirmelerinde eşlenmiş şema öğelerini programlama modelinde denetimler olarak kullanıma sunar. Visual Studio, Excel için denetimleri veritabanlarındaki, Web hizmetlerindeki ve nesnelerdeki verilere bağlama desteği ekler. Word ve Excel için Visual Studio, çözümleriniz için gelişmiş bir son kullanıcı deneyimi oluşturmak üzere şemayla eşlenmiş bir belgeyle kullanılabilen eylemler bölmeleri için destek ekler. Daha fazla bilgi için bkz . Eylemler bölmesine genel bakış.

Not

Excel çözümlerinde çok parçalı XML şemaları kullanamazsınız.

Şemalar Excel çalışma kitaplarına eklendiğinde oluşturulan nesneler

Çalışma kitabına şema eklediğinizde, Visual Studio otomatik olarak birkaç nesne oluşturur ve bunları projenize ekler. Bu nesneler Excel tarafından yönetildiğinden Visual Studio araçları kullanılarak silinmemelidir. Bunları silmek için, eşlenen öğeleri çalışma sayfasından kaldırın veya Excel araçlarını kullanarak şemayı çıkarın.

İki ana nesne vardır:

  • XML şeması (XSD dosyası). Çalışma kitabındaki her şema için Visual Studio projeye bir şema ekler. Bu, Çözüm Gezgini XSD uzantısına sahip bir proje öğesi olarak görünür.

  • Yazılan DataSet bir sınıf. Bu sınıf şemaya göre oluşturulur. Bu veri kümesi sınıfı Sınıf Görünümü'nde görünür.

Şema öğeleri Excel çalışma sayfalarına eşlendiğinde oluşturulan nesneler

XML Kaynağı görev bölmesindeki bir şema öğesini çalışma sayfasına eşlediğinizde, Visual Studio otomatik olarak birkaç nesne oluşturur ve bunları projenize ekler:

Office eşlenmiş şemalar ve Visual Studio Veri Kaynakları penceresi

Hem Office'in eşlenmiş şema işlevselliği hem de Visual Studio Veri Kaynakları penceresi, excel çalışma sayfasında raporlama veya düzenleme için veri sunmanıza yardımcı olabilir. Her iki durumda da veri öğelerini Excel çalışma sayfasına sürükleyebilirsiniz. Her iki yöntem de veya web hizmeti gibi DataSet bir veri kaynağına bağlı BindingSource veriler olan denetimler oluşturur.

Not

Yinelenen bir şema öğesini çalışma sayfasına eşlerseniz, Visual Studio bir ListObjectoluşturur. ListObject aracılığıyla verilere BindingSourceotomatik olarak bağlı değildir. Özellikler penceresinde ve DataMember özelliklerini ayarlayarak DataSource öğesini veri kaynağına el ile bağlamanız ListObject gerekir.

Aşağıdaki tabloda, iki yöntem arasındaki farklardan bazıları gösterilmektedir.

XML şeması Veri Kaynakları penceresi
Office arabirimini kullanır. Visual Studio'da Veri Kaynakları penceresini kullanır.
XML dosyalarından verileri içeri ve dışarı aktarmak için yerleşik Office özelliklerini etkinleştirir. İçeri ve dışarı aktarma işlevlerini program aracılığıyla sağlamanız gerekir.
Oluşturulan denetimleri verilerle doldurmak için kod yazmanız gerekir. Veri Kaynakları penceresinden eklenen denetimler, veritabanı sunucularını kullanırken gerekli bağlantı dizesi ile birlikte bunları doldurmak için otomatik olarak kod oluşturulur.

Şemalar Word belgelerine eklendiğinde davranış

Belge düzeyinde office projesinde kullanılan bir Word belgesine şema eklediğinizde veri nesneleri oluşturulmaz. Ancak, belgenize bir şema öğesi eşlediğinizde denetimler oluşturulur. Denetimin türü, eşlediğiniz öğe türüne bağlıdır; yinelenen öğeler denetimler, XMLNodes yinelenmeyen öğeler ise denetimler oluşturur XMLNode . Daha fazla bilgi için bkz. XMLNodes Denetimi ve XMLNode Denetimi.

XML şemaları içeren çözümlerin dağıtımı

Bir belgeye eşlenmiş XML şeması kullanan bir çözümü dağıtmak için bir yükleyici oluşturmanız gerekir. Yükleyicinin şemayı kullanıcının bilgisayarındaki şema kitaplığına kaydetmesi gerekir. Şemayı kaydetmezseniz, Word belgeyi açtığında belgedeki öğeleri temel alan geçici bir şema oluşturduğundan çözüm çalışmaya devam eder. Ancak, kullanıcı projeyi oluşturmak için kullanılan şema üzerinde doğrulama gerçekleştiremez veya bu şemayı kaydedemez. Yükleyiciler hakkında daha fazla bilgi için bkz . Uygulamaları, hizmetleri ve bileşenleri dağıtma.

Şemanın kitaplıkta ve kayıtlı olup olmadığını denetlemek için projenize kod da ekleyebilirsiniz. Değilse kullanıcıyı uyarabilirsiniz.

// Ensure that the schema is in the library and registered with the document.
private bool CheckSchema()
{
    const string namespaceUri = "http://schemas.contoso.com/projects";
    bool namespaceFound = false;
    bool namespaceRegistered = false;

    foreach (Word.XMLNamespace n in Application.XMLNamespaces)
    {
        if (n.URI == namespaceUri)
        {
            namespaceFound = true;
        }
    }

    if (!namespaceFound)
    {
        MessageBox.Show("XML Schema is not in library.");
        return false;
    }

    foreach (Word.XMLSchemaReference r in this.XMLSchemaReferences) 
    {
        if (r.NamespaceURI == namespaceUri)
        {
            namespaceRegistered = true;
        }
    }

    if (!namespaceRegistered)
    {
        MessageBox.Show("XML Schema is not registered for this document.");
        return false;
    }
    
    return true;
}