XML'de tek bir satırı nasıl yorumlayabilirim?


123

Bu daha ziyade, kaçırılmaması gereken bir doğrulama.

XML'de bir satır açıklaması var mı / yok mu? Yani, derleyicinin kullandığı "//" gibi daha yakın olmayan biri.

XML'deki bir etiket bloğunu nasıl yorumlayabilirim? ve diğer birkaç tartışma.

Bu tür bir yorum, bir satırın daha yakın bir yerinden rahatsız olmadan yorumlanması pratik olacaktır.


2
XML, editörler gibi araçların genellikle kelime kaydırma yapacağı ve bu nedenle satır sonlarının kırılgan olduğu varsayımına göre tasarlanmıştır. Yalnızca yorum durumunda satır sonlarının korunması gerekse kötü bir fikir olur.
Michael Kay

2
Şüphesiz editörler sadece gösterilmek üzere satırları sararlar . Dosyanın kendisine keyfi olarak eklenecek zor satırsonları hiç bilmiyordum. Bir satır yorumunun olmaması korkunç bir baş belası.
John White

Yanıtlar:


147

Hayır, XML'de bir satıra yorum yapmanın ve yorumun bir satır sonunda otomatik olarak bitmesini sağlamanın bir yolu yoktur.

XML bir yorum için yalnızca bir tanıma sahiptir :

'<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'

XML --, yorumlarda SGML ile uyumluluğu korumak için yasaklar .


Bir çözüm, satır açıklamalarını ( //) kullanmak ve kullanmadan önce bu yorumları çıkarmak için bir komut dosyası çalıştırmaktır (tek adımlı bir oluşturma sürecinin parçası olabilir). Yorumları kullanmanın çok daha uygun bir yolunu sağlar. (Bu tekniği WiX kaynağı ile kullandım (Windows için yükleyici aracı). Yükleyiciyi oluşturmak için birkaç adım daha gerekliydi, bu nedenle bu, bir derleme komut dosyasına / işlemine eklemek için yalnızca bir adım kaldı.)
Peter Mortensen

20

Diğerlerinin de söylediği gibi, XML'de yasal olarak birden çok satırı yorumlayan tek bir satır yorumu yapmanın bir yolu yoktur , ancak XML segmentlerini yorumlamayı kolaylaştırmanın yolları vardır.

Aşağıdaki örneğe baktığımızda, birinci satıra '>' eklerseniz, XmlTag yorumlanmayacaktır. '>' İşaretini kaldırın ve tekrar yorumlanır. Bu, bir şeyleri bozmadan XML'e hızlı bir şekilde yorum yapmanın / açıklamayı kaldırmanın en basit yoludur.

<!-- --
<XmlTag variable="0" />
<!-- -->

Eklenen fayda, yalnızca en üstteki yorumu değiştirmeniz ve alttaki yorumun orada sonsuza kadar kalabilmesidir. Bu SGML ile uyumluluğu bozar ve bazı XML ayrıştırıcıları üzerinde engel olur. Bu XML'nizde kalıcı bir fikstür olmadığı ve ayrıştırıcılarınız bunu kabul ettiği sürece, bu gerçekten bir sorun değildir.

Stack Overflow ve Notepad ++ 'ın sözdizimi vurgulayıcı, çok satırlı bir yorum, C ++' ın Boost'u gibi davranır kitaplığı bunu çok satırlı bir yorum olarak ele alır ve şimdiye kadar bulduğum tek ayrıştırıcı, .NET, özellikle C #. Bu nedenle, kullanmadan önce araçlarınızın, IDE'nizin, kitaplıklarınızın, dilinizin vb. Kabul ettiğini test ettiğinizden emin olun.

SGML uyumluluğunu önemsiyorsanız, bunun yerine şunu kullanın:

<!-- -
<XmlTag variable="0" />
<!- -->

Üst yoruma '->' ve alt yoruma bir '-' ekleyin. Olumsuz alt yolla düzenlemek için muhtemelen daha kolay sadece yazmak için yapacak her zaman sahip olduğu <!--üst kısmında ve -->her zaman altta.

Ayrıca, diğer yorumcuların XML bloklarına sağ tıklayıp yorum yapmanıza / yorum yapmanıza izin veren bir XML düzenleyici kullanmanızı tavsiye ettiğini de belirtmek isterim ki bu muhtemelen fantezi bul / değiştir hilelerine göre tercih edilir (aynı zamanda kendi başına iyi bir cevap olur, ancak bu tür araçları hiç kullanmadım. Sadece bilgilerin zamanla kaybolmadığından emin olmak istiyorum). Kişisel olarak hiçbir zaman XML ile Notepad ++ 'dan daha meraklısı bir editöre sahip olmayı haklı çıkarmak için yeterince uğraşmak zorunda kalmadım, bu yüzden bu tamamen size kalmış.


3
Maalesef bu yanlış. Spesifikasyon , Uyumluluk için "-" (çift tire) dizesinin yorumların içinde OLMAMASI GEREKİR
kojiro

2
Tabii ki yasal değil. Spesifikasyon bu konuda açık. XML ayrıştırıcıları Postel'in Yasasını izleyebilir ve bundan kurtulmanıza izin verebilir, ancak uyumlu bir iyi biçimlilik denetleyicisi onu işaretler.
kojiro

4
@Kojiro'nun dediği gibi, "-" içeren bir yorum iyi biçimlendirilmiş XML değildir. "Uyumluluk için" ile ilgili cümle, yalnızca bu korkunç kuralı dahil etme nedenlerini belirten teknik özellik editörleridir: Uyumlulukla ilgilenmiyorsanız kuralı görmezden gelebileceğiniz anlamına gelmez. Cevabı yanlış olduğu için olumsuz oylama.
Michael Kay

10
<!-- ->XML olmayan bir yere sahip olmak yerine bunu yazabilir ve bunun bir tire ekleme meselesi olmasını sağlayabilirsiniz.
kojiro

3
@RyanWH sizin için işe yarayan şeyi yapmaya devam ediyor, ancak kullandığınız XML ayrıştırıcısındaki bir hataya bağlı görünüyorsunuz. Kişisel olarak, bir XML metni seçmeme, sağ tıklamama ve yorum yapmamı sağlayan bir IDE (oXygen) kullanıyorum. Sizin tekniğinizden çok daha kolay görünüyor.
Michael Kay

12

HTML veya JavaScript blok yorumlarıyla aynıdır:

<!-- The to-be-commented XML block goes here. -->

5

Ortodoks değil, ama bazen benim için işe yarıyor; yorumunuzu başka bir öznitelik olarak ayarlayın:

<node usefulAttr="foo" comment="Your comment here..."/>

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.