Yanıtlar:
standaloneDeklarasyon herhangi biçimlendirme bildirimleri görmezden ayrıştırıcı anlatan bir yoludur DTD . DTD bundan sonra sadece doğrulama için kullanılır.
Örnek olarak, mütevazi <img>etiketi düşünün . XHTML 1.0 DTD'ye bakarsanız , ayrıştırıcıya <img>etiketlerin BOŞ olması ve sahip olması srcve altnitelikleri olması gerektiğini bildiren bir biçimlendirme bildirimi görürsünüz . Bir tarayıcı bir XHTML 1.0 belgesinden geçerken ve bir <img>etiket bulduğunda , DTD'nin gerektirdiğini srcve altniteliklerini fark etmeli ve mevcut değilse bunları eklemelidir. <img>EMPTY olması gerektiği için etiketi kendi kendine kapatacaktır . Bu nedir XML spesifikasyonu tarafından vasıta "biçimlendirme bildirimleri belgenin içeriğini etkileyebilir." Daha sonra standalone, ayrıştırıcıya bu kuralları yoksaymasını bildirmek için bildirimi kullanabilirsiniz .
Ayrıştırıcınızın bunu gerçekten yapıp yapmadığı başka bir sorudur, ancak standartlara uygun bir doğrulama ayrıştırıcısı (tarayıcı gibi) gerekir.
Bir DTD belirtmezseniz, bağımsız bildirimin "hiçbir anlamı" yoktur, bu nedenle bir DTD belirtmediğiniz sürece kullanmak için bir neden yoktur.
standalone=yesbiçimlendirme bildirimleri yok sayılmaz, bunun yerine belgenin geçersiz XML olmasına neden olur. Cevabı düzenleyebilsem sorun olur mu?
yesve varsayılan değer nonerede no?standalone="yes"XML işlemcinin DTD'yi yalnızca doğrulama için kullanması gerektiği anlamına gelir. Bu durumda, olacak değil kullanılacak:
standalone="yes"Belge harici bir DTD kullanıyorsa, geçerlilik kısıtlamaları ekleyebileceğini unutmayın . Belge, öznitelikler için varsayılan değerler gibi XML'nin değiştirilmesini gerektiren şeyler içerdiğinde ve standalone="yes"kullanıldığında , belge geçersizdir .standalone="yes" belge işleme performansını optimize etmeye yardımcı olabilir.Kaynak: Bağımsız sözde öznitelik yalnızca bir DTD kullanılıyorsa geçerlidir
standalone geçerli XML belgesinin harici bir biçimlendirme bildirimine bağlı olup olmadığını açıklar.
W3C amacını "Genişletilebilir Biçimlendirme Dili (XML) 1.0 (Beşinci Baskı)" bölümünde açıklamaktadır:
İşaretleme bildirimleri, bir XML işlemciden bir uygulamaya geçirildiği şekliyle belgenin içeriğini etkileyebilir; örnekler, öznitelik varsayılanları ve varlık bildirimleridir. XML bildiriminin bir bileşeni olarak görünebilen bağımsız belge bildirimi, belge varlığı veya parametre varlıklarında harici olarak görünen bu tür bildirimlerin olup olmadığını gösterir. [Tanım: Harici bir biçimlendirme bildirimi, harici alt kümede veya bir parametre varlığında meydana gelen bir işaretleme bildirimi olarak tanımlanır (harici veya dahili, doğrulama olmayan işlemcilerin bunları okuması gerekmediği için ikincisi dahil edilir).]
standalone=yesBeyannamenin amacı , belgenin içindeki bilgilerin sadece dahili DTD'ye dayanılarak sadakatle alınabileceğini garanti etmektir, yani belge harici referanslar olmadan "tek başına" olabilir. Bağımsız bir belgenin doğrulanması, doğrulama yapmayan işlemcilerin belgeyi doğru şekilde ayrıştırmak için mevcut tüm bilgilere sahip olmasını sağlar.
Bir belgenin harici DTD'si yoksa ve dahili DTD'nin parametre varlık referansları yoksa, bu belgeler zaten örtülü olarak bağımsız olduğu için bağımsız bildirim hiçbir amaca hizmet etmez.
Aşağıdakiler, kullanımın gerçek etkileridir standalone=yes.
Belge, dahili DTD'de bildirilmeyen varlıklara başvurular içeriyorsa, işlemcileri harici bir DTD veya parametre varlığı referanslarıyla ayrıştırırken hata atmaya zorlar (onaylamayan işlemciler olarak parametre varlıklarının değiştirilen metinleri hariç) bunu ayrıştır); amp, lt, gt, apos, Ve quotsadece istisnalar vardır
Bağımsız olarak bildirilmeyen bir belgeyi ayrıştırırken, doğrulamayan bir işlemci, bir parametre varlığı referansıyla karşılaşır karşılaşmaz dahili DTD'yi ayrıştırmayı durdurabilir. Bir belgeyi bağımsız olarak bildirmek, onaylamayan işlemcileri bir veya daha fazla parametre varlığı başvurusunu yok saydıktan sonra bile dahili DTD'deki biçimlendirme bildirimlerini ayrıştırmaya zorlar.
Belgede aşağıdakilerden herhangi biri bulunursa ve ilgili bildirimleri harici DTD'de veya parametre varlığı değiştirme metnindeyse, işlemcileri doğrulayanları hata atmaya zorlar:
amp,lt , gt, apos, ve quot)Doğrulamayan bir işlemci, harici DTD'yi almayı ve bunu yapma zorunluluğu olmasa da bağımsız olmayan belgeler için tüm parametre varlığı referanslarını genişletmeyi düşünebilir. standalone=yes , onaylamayan işlemciler için performansı teorik olarak iyileştirebilir (spoiler uyarısı: muhtemelen bir fark yaratmaz).
Buradaki diğer cevaplar eksik veya yanlış, ana yanlış anlama
Bağımsız bildirim, ayrıştırıcıya DTD'deki biçimlendirme bildirimlerini yok saymasını bildirmenin bir yoludur. DTD bundan sonra sadece doğrulama için kullanılır.
standalone = "yes", XML işlemcinin DTD'yi yalnızca doğrulama için kullanması gerektiği anlamına gelir.
Tam tersine, bir belgeyi bağımsız olarak bildirmek, gerçekte doğrulamayan bir işlemciyi normalde görmezden gelmesi gereken dahili bildirimleri (yani yoksayılmış bir parametre varlığı referansından sonra gelenleri) ayrıştırmaya zorlar. Doğrulama yapmayan işlemciler, varsayılan öznitelik değerleri sağlamak ve onaylanmış öznitelikleri normalleştirmek için dahili DTD'deki bilgileri kullanmaya devam etmelidir, çünkü bu, doğrulamadan bağımsızdır.