Yapılandırılmış Belge Etiketleri (İçerik Denetimleri) ile Çalışma

Yapılandırılmış Belge Etiketleri (İçerik Denetimleri) ile Çalışma

Yapısal Belge Etiketleri (İçerik Kontrolleri) ile Çalışma

Yapılandırılmış belge etiketi (SDT), Word UI’da içerik denetimi olarak bilinir, belge içeriğinin bir parçasını yazılmış, kısıtlı düzenleme davranışıyla sarar – bir onay kutusu, bir tarih seçici, bir açılır liste veya düz- ya da zengin-metin yer tutucu. Aspose.Words FOSS için .NET bunları şunun aracılığıyla modeller Aspose.Words.Markup ad alanı, başında StructuredDocumentTag sınıf. Bu sayfa içerik denetimlerinin eklenmesini, her türün yapılandırılmasını, bunların bulunup kaldırılmasını ve özel XML verilerine bağlanmasını kapsar.


Yapısal Belge Etiketi Nesne Modeli

StructuredDocumentTag, aynı zamanda IMarkupNode, ITrackableNode ve IStructuredDocumentTag arayüzlerini uygulayan bir CompositeNode dir. SdtType, kontrolün hangi türde olduğunu belirler. Tag ve Title, yazarların Word içinde ayarladığı tanımlayıcı dizeleri tutar; Placeholder (bir BuildingBlock) ve PlaceholderName, kontrol boş olduğunda gösterilen istem metnini sağlar ve bu IsShowingPlaceholderText aracılığıyla raporlanır. LockContentControl, kontrolün silinmesini engeller ve LockContents, içeriğinin düzenlenmesini, birbirinden bağımsız olarak, engeller.


İçerik Kontrollerini Ekleme

DocumentBuilder.InsertStructuredDocumentTag(SdtType), imleçte yeni bir kontrol ekler, ancak sadece SdtType değerlerinin yedisine: PlainText, RichText, Checkbox, DropDownList, ComboBox, Picture ve Date. RepeatingSection ve RepeatingSectionItem bu şekilde bir metin imlecine eklenemez — bunun yerine tüm paragrafları veya tablo satırlarını sararlar. Word dosyalarında görünen ancak Word UI’da eklenebilir türler olarak bulunmayan kalan SdtType değerleri — None, Bibliography, Citation, Equation, BuildingBlockGallery, DocPartObj, Group ve EntityPicker — bu ekleme yöntemi tarafından desteklenmez.


Tür-Spesifik İçerik

Bir onay kutusu denetiminin durumu StructuredDocumentTag.Checked‘dır; SetCheckedSymbol() ve SetUncheckedSymbol() her durum için gösterilen glifleri ayarlar. Bir tarih denetimi değerini FullDate‘te saklar, DateDisplayFormat ve DateDisplayLocale nasıl görüntüleneceğini kontrol eder, DateStorageFormat (bir SdtDateStorageFormat) XML verisine bağlandığında nasıl depolanacağını kontrol eder ve CalendarType (bir SdtCalendarType) takvim sistemini seçer. Bir açılır liste veya birleşik kutu seçeneklerini ListItems aracılığıyla sunar, bu bir SdtListItemCollection SdtListItem (DisplayText, Value) ile SelectedValue‘e sahiptir. Düz metin denetiminin Multiline özelliği içinde satır sonlarına izin verir ya da engeller.


Görünüm ve Kilitleme

Appearance (SdtAppearance) denetimin Word içinde görsel olarak nasıl sınırlandırıldığını kontrol eder. Color vurgulama rengini ayarlar ve ContentsFont / EndCharacterFont içeriğine uygulanan yazı tipini ve son karakterini kontrol eder. LockContentControl ve LockContents bağımsız anahtarlardır — ilki denetimin kendisinin silinmesini engeller, ikincisi içindekilerin düzenlenmesini engeller.


İçerik Denetimlerini Bulma ve Kaldırma

Range.StructuredDocumentTags, o aralığa kapsamlı bir StructuredDocumentTagCollection döndürür; GetById(), GetByTag() ve GetByTitle() hedefli arama için Remove() ve RemoveAt() ile birlikte bulunur. Tek bir StructuredDocumentTag üzerinde, Remove() denetimi ve içeriğini birlikte siler, RemoveSelfOnly() yalnızca sarmalayıcıyı siler ve içeriğini belgede tutar, ve Clear() denetimin içeriğini boşaltırken denetimi kendisini korur.


XML Veri Bağlama

StructuredDocumentTag.XmlMapping, belgede özel bir XML bölümüne bağlamayı tanımlayan bir XmlMapping örneğidir: CustomXmlPart, XPath, PrefixMappings, StoreItemId ve IsMapped. SetMapping(), mevcut bir özel XML bölümüne bağlamayı kurar ve Delete() bunu kaldırır.


Çok Bölümlü (Aralıklı) İçerik Denetimleri

Birden fazla bölümü kapsayan içerik denetimi – IsMultiSection tarafından rapor edilen – tek bir StructuredDocumentTag düğüm yerine StructuredDocumentTagRangeStart ve StructuredDocumentTagRangeEnd düğümlerinin bir çiftiyle, StructuredDocumentTagRangeStart.RangeEnd aracılığıyla bağlanarak temsil edilir. Tek düğüm ve aralık biçimleri her ikisi de ortak IStructuredDocumentTag arayüzünü uygular, bu nedenle yalnızca Tag, Title, SdtType, Placeholder ve benzeri tanımlayıcı özelliklere ihtiyaç duyan kod, her iki biçimle de aynı şekilde çalışabilir.


İpuçları ve En İyi Uygulamalar

  • DocumentBuilder.InsertStructuredDocumentTag()‘ın desteklenen tip listesine güvenmeden önce kontrol edin – yalnızca PlainText, RichText, Checkbox, DropDownList, ComboBox, Picture ve Date imleçte eklenebilir; diğer tipler bir istisna fırlatır.
  • Bir içerik denetimini “flatten” (düzleştirmek) istediğinizde Remove() yerine RemoveSelfOnly() kullanın – içeriğini belgede tutun ancak denetim sarmalayıcısını kaldırın.
  • DropDownList veya ComboBox denetiminin seçenekleri göstermesini beklemeden önce ListItems‘ı doldurun ve etkin olanı seçmek için SelectedValue‘ı ayarlayın.
  • Kodunuz hem sıradan hem de çok bölümlü (aralık) içerik denetimlerini aynı şekilde ele alması gerekiyorsa, doğrudan StructuredDocumentTag yerine IStructuredDocumentTag üzerinden programlayın.
  • XmlMapping.SetMapping(), belgenin özel XML veri deposunda zaten var olması gereken özel bir XML bölümüne bağlanır – bir denetimi ona eşlemeden önce XML verisini ekleyin veya yükleyin.

Yaygın Sorunlar

SorunSebepDüzeltme
InsertStructuredDocumentTag() NotImplementedException fırlatırİstenen SdtType (örneğin Citation, Equation veya BuildingBlockGallery) yedi eklenebilir türden biri değildir.Şunlardan birini kullanın: PlainText, RichText, Checkbox, DropDownList, ComboBox, Picture, Date
InsertStructuredDocumentTag() InvalidOperationException fırlatırMetin imlecinde RepeatingSection veya RepeatingSectionItem istendi.Bu türler tüm paragrafları veya tablo satırlarını sarar, bir imleç konumunu değil.
Bir içerik denetimini kaldırmak, içindeki metni de siler.Remove() denetimi ve içeriğini birlikte siler.İçeriği korumak için RemoveSelfOnly()’ı çağırın
Onay kutusu beklenen simgeyi göstermiyorÖzel işaretli/işaretsiz glifler ayarlanmamıştıÇağırın SetCheckedSymbol() ve SetUncheckedSymbol()

FAQ

Hangi içerik denetim türlerini DocumentBuilder ile doğrudan ekleyebilirim?

PlainText, RichText, Checkbox, DropDownList, ComboBox, Picture ve Date. Diğer SdtType değerleri InsertStructuredDocumentTag() tarafından desteklenmez.

Belirli bir etiketle tüm içerik denetimlerini nasıl bulabilirim?

Range.StructuredDocumentTags.GetByTag() kullanın, ya da GetByTitle() / GetById() kullanın eğer bunları eşleştiriyorsanız.

İçeriğini koruyarak bir içerik denetimini nasıl kaldırabilirim?

StructuredDocumentTag.RemoveSelfOnly() çağırın, Remove() yerine.

Bir içerik denetimini özel XML verilerine nasıl bağlarım?

Kontrol üzerinde XmlMapping.SetMapping() çağırın, mevcut bir özel XML bölümüne ve içinde bir XPath ifadesine işaret ederek.

Düz bir StructuredDocumentTag ile aralıklı olan arasındaki fark nedir?

Birden fazla belge bölümünü kapsayan bir içerik kontrolü, tek bir düğüm yerine StructuredDocumentTagRangeStart / StructuredDocumentTagRangeEnd çifti olarak temsil edilir; her iki biçim de IStructuredDocumentTag uygular.


API Reference Özeti

Sınıf / Arayüz / EnumAçıklama
StructuredDocumentTagİçerik kontrol düğümü; SdtType, Tag, Title, Remove(), RemoveSelfOnly(), Clear()
IStructuredDocumentTagNormal ve çok bölümlü içerik denetimleri tarafından paylaşılan ortak arayüz
StructuredDocumentTagCollectionAralık içindeki içerik denetimleri, Range.StructuredDocumentTags aracılığıyla; GetById(), GetByTag(), GetByTitle()
StructuredDocumentTagRangeStart / StructuredDocumentTagRangeEndÇok bölümlü bir içerik denetimini temsil eden başlangıç/bitiş çifti
SdtTypeİçerik denetiminin türünü belirten enum
SdtAppearanceİçerik denetimi için görsel ayırıcı stili
SdtCalendarType / SdtDateStorageFormatTarih denetimi için takvim sistemi ve depolama formatı
SdtListItem / SdtListItemCollectionAçılır liste veya birleşik kutu denetimi için seçenekler
XmlMappingİçerik denetimi için özel XML veri bağlaması; SetMapping(), Delete()
DocumentBuilder.InsertStructuredDocumentTagİmleçte desteklenen bir content-control türü ekler

Ayrıca Bakınız

 Türkçe