【问题标题】:How do I comment attributes inside an XML tag?如何评论 XML 标记内的属性?
【发布时间】:2014-12-15 05:05:40
【问题描述】:
是否可以在 XML 标记中注释一个或多个属性?类似于来自 C 的 /* */。
我曾尝试使用<!-- -->,但不成功。
<element
attribute1="value1"
attribute2="value2"
<!-- attribute3="value3" (commented value) -->
>
【问题讨论】:
标签:
xml
comments
xml-comments
xml-attribute
【解决方案1】:
来自 w3.org 的 Liam R. E. Quin:(被问及是否可以在未来版本的 XML 中注释掉属性):
SGML allows this, with e.g.
<sock -- age="19" -- state="clean" -- id="s36" >
<shoe -- id="s12" ></sock>
being the same as
<sock state="clean" id="s12">
但是使用相同的开始和结束分隔符导致了很多
问题,我们在定义 XML 时就去掉了这个特性。 ID
想将评论开始和结束更改为 --* 和 *-- 这将
让我们保持在标签和声明中包含 cmets 的能力,
有一段时间它在 XML 规范中,但我似乎记得它是
由于 SGML 兼容性问题而被丢弃。恐怕不是
以不兼容的方式更改 XML 的可能性不再 - 它也变得
无处不在——我们不再有一个工作组在
XML 本身。
感谢您的来信。
利亚姆
【解决方案2】:
该操作无效。您不能评论 xml 节点标签的属性。如果您希望在属性中添加一些 cmets,请将您的评论放在目标节点上方。
< !-- -- > 是将 cmets 放入 xml 文件的有效方式,但它应作为 xml 节点放置,而不是“节点属性”(在另一个节点标记内)。
HTML 示例:
<!-- I can comment before the node -->
<div>This node I want to comment</div>
<!-- I can comment after the node -->
但这是不允许的:
<div <!--attribute="12" --> >
根据W3C documentation
注意 cmets 是标记。
参考:
【解决方案3】:
唯一合规的方法是创建一个没有相关属性的节点。我经常使用这种方法:
<div>
<!-- This opening div tag replaces the one above.
<div my-attribute="my-value"> -->
div contents here...
</div>
阐明注释掉的开放标记是什么的注释取决于您的需要(使用此代码的同事等)。
然后,当您需要改变时,只需将其更改为:
<!-- <div>
This opening div tag replaces the one below. -->
<div my-attribute="my-value">
div contents here...
</div>
同样,您对评论的需求将随每个案例而变化。
它很简单,允许您像在“正常”编码中一样复制/粘贴以注释/取消注释。
【解决方案4】:
不,这是不可能的。 XML 打开标记中不允许有注释。根据您的应用程序,您可能会通过在属性名称前加上“_”前缀来“注释掉”属性,或者您可能不会(如果 XML 已针对模式进行验证或所有属性都已解析)。由于允许使用空格,并且大多数编辑器都支持行操作,因此您可以通过这种方式轻松“注释”多个属性:
<element
_attr1="value1"
_attr2="value2"
_attr3="value3"
>
但这些属性仍然是文档的一部分。