Özel XML İşaretlemesiyle Çalışma

Özel XML İşaretlemesiyle Çalışma

Özel XML İşaretleme ile Çalışma

Bu kılavuz, bir Word belgesinin görünen içeriğinin yanı sıra taşıyabileceği özel XML verilerini nasıl okuyup yöneteceğinizi gösterir — içerik denetimlerini bağlamak, uygulamaya özgü üst verileri depolamak veya rastgele paket bölümleri eklemek için kullanılan veriler. Document.CustomXmlParts, belge düzeyinde özel XML verilerini ortaya çıkarır ve Document.PackageCustomParts, özel XML olarak özellikle tanımlanmamış paket düzeyinde özel bölümleri ortaya çıkarır.


Özel XML Bölümler

CustomXmlPart, belgeye eklenmiş bir özel XML veri adasını temsil eder — Word’ün XML eşlenmiş içerik denetimlerini desteklemek için kullandığı aynı mekanizma. Her bölüm bir Id, ham XML’yi tutan bir Data bayt dizisi, bir DataChecksum ve ona bağlı XML şemalarını listeleyen bir Schemas özelliği (bir CustomXmlSchemaCollection) içerir. Document.CustomXmlParts, bir CustomXmlPartCollection döndürür: Add(part), mevcut bir CustomXmlPart‘yi ekler, Add(id, xml), bir kimlik ve XML dizesinden doğrudan bir tane oluşturur, GetById(id) belirli bir bölümü alır ve RemoveAt(index)/Clear() bölümleri kaldırır. Hem CustomXmlPart hem de CustomXmlPartCollection, örneğin belgeler arasında içerik kopyalarken özel XML verilerini çoğaltmak için Clone()‘yı ortaya çıkarır.

Özel XML Şemaları

CustomXmlSchemaCollection, CustomXmlPart.Schemas aracılığıyla erişilen, özel XML bir bölümle ilişkili şema URI’lerini listeler. Add(value), Remove(name), RemoveAt(index), IndexOf(value), Clear() ve Clone() desteklenir, ayrıca bir Count özelliği bulunur — şema URI’leri ayrıştırılmış şema nesneleri yerine düz metin dizeleri olarak izlenir.

Özel XML Özellikleri

CustomXmlPart‘dan ayrı olarak, CustomXmlProperty tek bir ad/değer XML özelliğini temsil eder, CustomXmlProperty(name, uri, value) ile oluşturulur ve Name, Uri ve Value‘i ortaya çıkarır. CustomXmlPropertyCollection bunların bir kümesini yönetir: Add(property) bir tane ekler, indeksleyici (ör. properties["MyProp"]) isme göre birini bulur ve Contains(name) var olup olmadığını test eder, IndexOfKey(name) konumunu döndürür ve Remove(name)/RemoveAt(index)/Clear() girişleri kaldırır. SmartTag.Properties bir CustomXmlPropertyCollection döndürür, bu da eski bir akıllı etiketin yapılandırılmış verisinin temsil edildiği şeklidir (aşağıya bakın).

Paket Düzeyinde Özel Parçalar

Document.PackageCustomParts bir CustomPartCollection döndürür CustomPart nesnelerinin — OOXML paketinde depolanan, özel XML verileri olmayan, dosyaya dokunan diğer uygulamalar tarafından eklenen parçalar gibi keyfi parçalar. Her CustomPart bir Name, ContentType, RelationshipType, bir Data bayt dizisine ve parçanın gömülü içerik yerine harici bir referans olup olmadığını gösteren bir IsExternal bayrağına sahiptir. Koleksiyon Add(part), RemoveAt(index), Clear() ve Clone() destekler, ayrıca Count.

Eski Akıllı Etiketler

SmartTag, tanınan metnin etrafına sarılmış eski bir Word akıllı etiketi temsil eden bir düğüm türüdür (NodeType.SmartTag). Bir SmartTag, SmartTag(doc) ile oluşturulur ve Element (tanıyıcı öğe adı) ve Uri (tanıyıcının ad alanı) ile birlikte Properties — tanıyıcının etiketli metne eklediği yapılandırılmış verileri tutan bir CustomXmlPropertyCollection — öğesini ortaya çıkarır. SmartTag bir düğüm olduğundan, diğer düğümler gibi belge ağacına da katılır ve Accept(visitor), AcceptStart(visitor) ve AcceptEnd(visitor) destekleyerek DocumentVisitor-tabanlı gezinmeyi sağlar.

MarkupLevel

MarkupLevel bir enum’dur — Unknown, Inline, Block, Row, Cell — yapılandırılmış bir belge etiketi gibi bir işaretleme öğesinin ortaya çıkabileceği belge ağacındaki yapısal seviyeyi tanımlar.


İpuçları ve En İyi Uygulamalar

  • Gerekli parçanın kimliğini bildiğinizde koleksiyonu elle döngüye almaktansa CustomXmlPartCollection.GetById(id) kullanın.
  • Tam bir bayt karşılaştırması yapmadan temel XML verisinin değişip değişmediğini tespit etmek için CustomXmlPart.DataChecksum‘ı okuyun.
  • Document.CustomXmlParts‘ı (içerik denetimlerine sık sık bağlı özelleştirilmiş XML verisi) Document.PackageCustomParts‘den (keyfi olmayan-XML paket bölümleri) ayırın — farklı amaçlara hizmet eder ve ayrı ayrı depolanırlar.
  • Akıllı etiketler kullanan eski belgelerle çalışırken, etiketin Properties‘sine güvenmeden önce hangi tanıyıcının etiketi oluşturduğunu belirlemek için SmartTag.Element ve Uri‘i birlikte kontrol edin.
  • Belgeler arasında veri kopyalarken ham XML’i yeniden okuma ve ekleme yerine, özelleştirilmiş XML bölümlerini CustomXmlPart.Clone() (veya koleksiyonun Clone()) ile çoğaltın.

Yaygın Sorunlar

SorunNedenDüzeltme
CustomXmlPartCollection.GetById(id) kullanılabilir bir şey döndürmüyorid, Document.CustomXmlParts içinde şu anda bulunan hiçbir parçayla eşleşmiyorKoleksiyonu listeleyerek id’yi doğrulayın, ya da önce Add(id, xml) ile parçayı ekleyin
Özel XML verileri, görünen içerik denetimlerine alakasız görünüyorİçerik denetimleri, kendi veri bağlama yapılandırmaları aracılığıyla özel XML ile bağlanır, her CustomXmlPart için otomatik olarak bağlanmazBir içerik denetiminin hangi bölüme bağlandığını, Document.CustomXmlParts ile 1:1 bir ilişki varsaymak yerine doğrulayın
Başka bir uygulama tarafından eklenen bir paket bölümü CustomXmlParts içinde bulunamadıXML olmayan paket bölümleri Document.PackageCustomParts aracılığıyla sunulur, CustomXmlParts aracılığıyla değilBunun yerine PackageCustomParts‘ı (CustomPartCollection) kontrol edin
SmartTag.Properties boşHer akıllı etiket tanıyıcısı yapılandırılmış özellikler eklemezBelirli özellikleri beklemeden önce, etiketi hangi tanıyıcının oluşturduğunu doğrulamak için SmartTag.Element/Uri‘i kontrol edin

FAQ

CustomXmlPart ile CustomXmlProperty arasındaki fark nedir?

CustomXmlPart bir bütün XML veri adasıdır (bayt-dizisi yükü ve ilişkili şemalarla), Document.CustomXmlParts aracılığıyla erişilir. CustomXmlProperty tek bir ad/değer çiftidir, genellikle doğrudan belge üzerinden değil SmartTag.Properties aracılığıyla erişilir.

Özel XML verisini bir belgeye nasıl eklerim?

Bir kimlik dizesi ve XML içeriği ile Document.CustomXmlParts.Add(id, xml)‘ı çağırın, ya da ayrı olarak bir CustomXmlPart oluşturup Add(part)‘ye iletin.

Paket özel bölümleri nedir ve bunlar özel XML bölümlerinden nasıl farklıdır?

Document.PackageCustomParts (CustomPart nesnesinden oluşan bir CustomPartCollection) özel XML olmayan isteğe bağlı OOXML paket bölümlerini tutar — her biri bir ContentType, RelationshipType ve ham Data‘e sahiptir. Document.CustomXmlParts özellikle özel XML veri adaları içindir.

SmartTag nedir?

SmartTag, akıllı etiket tanıyıcı tarafından tanımlanan ve sarılan metni temsil eden eski bir Word özelliğidir. Bu, tanıyıcıyı tanımlayan bir Element ve Uri‘a sahip bir belge düğümüdür (NodeType.SmartTag) ve tanıyıcı tarafından eklenen CustomXmlProperty değerlerinin bir Properties koleksiyonudur.

Özel XML verisini belgeler arasında nasıl kopyalarım?

Kaynak bölümde CustomXmlPart.Clone() kullanın, ardından kopyayı hedef belgenin Document.CustomXmlParts‘e Add(part) ile ekleyin.


API Reference Özeti

Sınıf/YöntemAçıklama
CustomXmlPartBir belgeye eklenmiş tek bir özel XML veri adası
Document.CustomXmlPartsBelge üzerindeki tüm özel XML parçalarının CustomXmlPartCollection
CustomXmlPartCollection.Add(id, xml) / GetById(id)Kimlik (id) üzerinden özel XML parçası ekle veya getir
CustomXmlSchemaCollectionCustomXmlPart ile ilişkili şema URI’leri
CustomXmlPropertyTek bir ad/değer XML özelliği
CustomXmlPropertyCollectionBir CustomXmlProperty değeri koleksiyonu, ör. SmartTag.Properties üzerinde
Document.PackageCustomPartsKeyfi non-XML OOXML paket bölümlerinin CustomPartCollectionsi
CustomPartBir paket düzeyinde özel bölüm, Name, ContentType ve ham Data içerir
SmartTagAkıllı etiket tanıyıcısı tarafından tanınan metni saran eski düğüm türü
MarkupLevelBir işaretleme öğesinin belge ağacında nerede ortaya çıkabileceğini tanımlayan enum

Ayrıca Bakınız

 Türkçe