Bir xml yorumu neden iki tire içeremez?


16

XmlParser xml yorumlarında iki tire ( --) izin verilmediğini bildirdiğinde bir yapılandırma dosyasının xml yorumlarında markdown yorumları uyguluyordum .

XML Spesifikasyonu kontrol edildiğinde , xml yorumunun SGML ayrıştırıcılarıyla uyumluluk nedeniyle iki tire içerecek şekilde tasarlanmadığı anlaşılmaktadır.

SGML ayrıştırıcıları neden yorumlarda çift tire kullanımına izin vermiyor?


2
Ben "daha standart diyor" çünkü daha iyi bir cevap alacağını sanmıyorum
jk.

Tek cevap bu, o zaman başka seçeneğim yok :-(, ancak bundan daha iyi bir cevap olabilir.
OnesimusUbound 17:13

Yanıtlar:


30

Bu sayfa , HTML / SGML geçmişinin birazını ve bu iki ardışık tirenin (çift tire) oldukça kıvrımlı kurallarını özetliyor.

SGML ile ilgili bölüm:

Basitçe ifade etmek gerekirse, yorumun başlangıcındaki ve sonundaki çift tire, yorumu başlatmaz ve bitirmez. Çift kısa çizgi, yorumun içermesine izin verilen değişikliği gösterir. İlk - yorumu başlatır ve tarayıcıya, yorumu sonlandırmadan> karakter içermesine izin verildiğini bildirir. İkincisi - yorumu bitmez. Tarayıcıya bir> karakteriyle karşılaşırsa, yorumu sonlandırması gerektiğini söyler. Başka bir - eklenirse,> karakterlerine izin vermeye geri döner.


7
Bahsettiğiniz bölüm . Yorumda SGML özelliklerinin neyi amaçladığını okuduğumda --, başım daha sonra tanıtacağı karmaşıklık hakkında dönüyor.
OnesimusUnbound

1
--Bir yorumda asla kullanılmaması önerisi benim için iyi görünüyor. Ancak, bundan kaçmanın standart bir yolu var mı? foo -- barHiçbir zaman soruna neden olmamasını sağlamak için bir çıkış filtresi oluşturmak (ve paylaşmak) istiyorum . SGML eşdeğeri var foo -\- barmı? (Eminim ki ters eğik çizgi yok!) Veya -( bu cevaba bakınız ), ya da başka bir şey? Sadece veya --ile değiştirirsek , kaçış geri döndürülemez. -- -
fazy

12

Çünkü SGML'de bir çift tire , yorum sınırlayıcıdır. <!Bir SGML talimat başlar --bir açıklama belirtir. Yani temelde aynı nedenden dolayı bir C ++ yorumu içeremez */.


1
Bence -->yorum sınırlayıcı.
OnesimusUnbound

10
Hayır öyle değil. <!bir SGML talimatı başlatır, >bitirir. Bir SGML talimatında --hem bir açıklama başlar hem de sona erer.
Jörg W Mittag

7
Ahh cevabınıza yorumunuzu ekleyin, bu aydınlatıcı çünkü <! SomeRelevantSgmlTag - bir yorum - someAttribute = "blabla" - başka bir yorum -> yazabileceğiniz anlamına geliyor ve anlamsal anlam <! SomeRelevantSgmlTag someAttribute = " blabla ">
Jimmy Hoffa

1
Ah, mantıklı. --> aslında iki jeton, --yorumu sınırlamak ve >SGML talimatını sonlandırmak. Şimdi, nerede bir fikir var <![CDATA[... ]]>kökenlidir.
OnesimusUnbound

Yorumu birleştirdim.
Joris Timmermans
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.