Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Is&;燃气轮机;有必要吗?_Html_Xml_Escaping_Quoting_Sgml - Fatal编程技术网

Html Is&;燃气轮机;有必要吗?

Html Is&;燃气轮机;有必要吗?,html,xml,escaping,quoting,sgml,Html,Xml,Escaping,Quoting,Sgml,我现在开发网站和XML接口已经7年了,从来没有遇到过真正需要使用进行的情况。到目前为止,所有的歧义消除都可以通过引用来处理,因为几乎任何XML解释器都能理解您的意思。但如果你这样做,你仍然会使用一个没有任何保护的特殊角色 XML完全是关于语义的,这并不是真正符合语义的 关于您的更新,您忘记了这一部分: 直角括号(>)可以用字符串“>”表示,为了兼容,当它出现在内容中的字符串“]>”中时,必须使用“”或字符引用进行转义,而该字符串未标记CDATA节的结尾 文档中给出的用例更像是这样: <xm

我现在开发网站和XML接口已经7年了,从来没有遇到过真正需要使用
进行
的情况。到目前为止,所有的歧义消除都可以通过引用
来处理,因为几乎任何XML解释器都能理解您的意思。但如果你这样做,你仍然会使用一个没有任何保护的特殊角色

XML完全是关于语义的,这并不是真正符合语义的

关于您的更新,您忘记了这一部分:

直角括号(>)可以用字符串“>”表示,为了兼容,当它出现在内容中的字符串“
]>
”中时,必须使用“
”或字符引用进行转义,而该字符串未标记CDATA节的结尾

文档中给出的用例更像是这样:

<xmlmarkup>
]]>
</xmlmarkup>

]]>

这里的
]]>
部分可能是旧的SGML解析器的问题,因此出于兼容性的原因,必须将其转义到=
]]

与其说是(x)html文档的作者,不如说是网站中“提供”插入html的草率书面评论字段的用户

我的意思是如果你用正确的方式做你的网站,你不会硬编码你的内容,对吗?因此,您对
htmlentities
或任何东西(好久不见,php)的调用将为您替换特殊字符。 当然,您不会手动键入
,但我希望您采取措施,以便自动替换

我以前使用过严格的xml验证程序。另一种情况是,当您在html/xml内容文本(而不是属性)中实际使用它们时,例如:
在Firefox中:

<?xml version="1.0" encoding="utf-8" ?>
<test>
    ]]>
</test>

]]>

诚然,这仍然不是一个必须跳出一个单独的

的例子,我只是想到了另一个例子,在HTML5(而不是XHTML5)文档中需要引用
:如果你需要在属性中不加引号(这当然是有争议的)


应该与XHTML等效

<img src="arrow.png" alt=">" />
“/>

但是,再一次,(?假设您有以下文本
这不是美好的一天]]>

为了避免这种情况(并允许对带有未终止标记部分的SGML片段进行解析),ISO 8879:1986第10.4条声明,在标记部分之外出现
]]>
节是一个错误

此外,在SGML时代,带标记的部分非常流行,因为它们不仅用于CDATA(如XML),还用于RCDATA(仅允许实体和字符引用)和IGNORE and INCLUDE(允许识别其中的标记)

例如,在SGML中,可以编写:

 <!ENTITY %WHATTODO "INCLUDE">
 <![%WHATTODO;[<b>]]&gt;</b>]]>

]]]]>
这相当于:

 <b>]]&gt;</b>
]]

也许我不明白,但它有助于防止html/js的注入。如果您的结果html是xhtml complient,那么它也是必需的。我认为它与“
”的对称性比其他任何东西都重要。您不需要这样做,因为浏览器与编译器不同,它们过于宽容/宽容,因此不了解标准跨网络。您不是在JavaScript字符串中转义“”?(
var test='I'll tell';
)这是同样的事情。@Nate Boss:如果你总是正确地避开
是防止HTML注入的必要条件吗?关于XHTML遵从性:我检查了XML规范,他们没有说
比任何字母都特别。@Mike Gleason jr Couturier:在我的问题中,我并不特别关注浏览器,而是整个SGML/XML工具链。事实上,我对格式良好的XML的问题比对任何浏览器的怪癖更感兴趣。不,我不认为JS中的转义引号与这个问题有任何关系。实际上,如果您只转义,您引用的示例是否也有效d
好的,现在我明白你想表达的意思了。用一个例子更新了这篇文章,这个例子给出了Firefox中的paring错误,但是如果你不需要逃逸>,它会解析。是的,现在我们也这么想。科林和我也发现了这个问题。看起来,至少在SGML的“XML”部分"-世界上,这是唯一一个相关的例子,说明
是有意义的。那几乎部分呢?有没有人会因为一个未引用的
而打嗝?好吧,如果有人编写了一个只尊重XML标准的XML解析器,这可能会发生。我不知道哪一个解析器会有这种行为,但这既不是它的错,也不是问题em.遵守XML标准的XML解析器必须接受未加引号的
。我认为您引用的段落指的是与不兼容的解析器的兼容性,或者可能与旧的(草稿)兼容规范的版本。@Daniel来自此规范:,是的,它是关于兼容性的。必须的部分对我来说意味着我在这里没有选择。好的,再一次:在规范中,我发现
唯一相关的地方是
]>
CDATA关闭。这是一种特殊情况,因为
]
不会关闭“我不会给你带任何东西。(顺便说一下,这是唯一一个包含字符串
的部分。)
 <!ENTITY %WHATTODO "INCLUDE">
 <![%WHATTODO;[<b>]]&gt;</b>]]>
 <b>]]&gt;</b>