Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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 XML文件中的自动关闭标记_Html_Xml_Tags - Fatal编程技术网

Html XML文件中的自动关闭标记

Html XML文件中的自动关闭标记,html,xml,tags,Html,Xml,Tags,我注意到它们与PHP SimpleXML一起工作 但我在web上找到的所有XML示例都以旧的方式关闭了它们: 有什么理由我应该使用旧方法吗?在某些情况下,单独的打开/关闭标记是必要的:例如,我发现HTML中的标记需要有单独的打开/关闭,才能在某些浏览器中一致工作。单独的打开/关闭有点冗长,但在这些实例中是值得的。它们对于XML是相同的,但根据您的使用情况可能会有所不同。例如,在xhtml1.0中,有一个For标记允许自动关闭。只要您将doctype保持为正确的xhtml类型,就应该可以了。查看

我注意到它们与PHP SimpleXML一起工作

但我在web上找到的所有XML示例都以旧的方式关闭了它们:


有什么理由我应该使用旧方法吗?

在某些情况下,单独的打开/关闭标记是必要的:例如,我发现HTML中的标记需要有单独的打开/关闭,才能在某些浏览器中一致工作。单独的打开/关闭有点冗长,但在这些实例中是值得的。

它们对于XML是相同的,但根据您的使用情况可能会有所不同。例如,在xhtml1.0中,有一个For标记允许自动关闭。只要您将doctype保持为正确的xhtml类型,就应该可以了。查看stackoverflow以获得更详细的解释。

当您想使用PHP时,可以使用开始标记、关闭标记或完整标记。根据您的意愿,您可能希望在关闭标记上有一个特定的操作。

请参阅W3C XML和XHTML规范:

它取决于元素类型声明

没有内容的元素称为空。空元素的表示形式可以是紧跟着结束标记的开始标记,也可以是空元素标记

而且

空元素标记可用于任何没有内容的元素,无论是否使用关键字Empty声明。对于互操作性,空元素标记应该被使用,并且只应该被用于声明为空的元素

这意味着,当DTD包含以下内容时

<!ELEMENT img EMPTY>

你应该使用

<img/>

除非你有充分的理由使用

<img></img>

注意,作为

这个词或形容词“推荐”的意思是 在特定情况下,可能存在忽略 特定项目,但必须理解和理解其全部含义 在选择不同的课程之前仔细权衡

如果您使用的XML没有DTD或模式,您还可以通过以下方式影响XML的序列化方式:

LIBXML\u NOEMPTYTAG(整数):扩展空标记(例如




但请注意,此选项当前仅在函数
DOMDocument::save
DOMDocument::saveXML
中可用,因此不能与SimpleXml一起使用

是的,事情并不像一开始看起来那么简单

XSD差异: 首先,它取决于您的数据类型。如果使用XSD模式定义定义元素的类型,那么
实际上只能用于字符串类型。因为,这就是它,它实际上是一个空字符串值:

因此,对整数使用
是非法的,而相比之下
适用于所有简单类型

JAXB差异: JAXB(javaxml绑定)也有类似的怪癖。它会根据目标数据类型将
映射为不同的值:

  • 对于字符串,它将是一个“”
  • 对于整数,它将是一个0
  • 对于其他类型,它只会跳过它
您可能会认为
将解析为
null
值。但实际上,您需要使用
来实现这一点。这是我在实践中从未见过的

HTML: 在HTML中,总是有第三个选项
,没有结束标记。我不知道你的情况,但我每天都要提醒自己,HTML不仅仅是XML。这实际上意味着


不是一回事。您不应该在HTML中使用

,也不应该在XHTML中使用

角度2+: 但我真正想说的是,继续上一句话,如果你使用像Angular2+这样的框架,还有一件事需要记住

Angular用链接到组件的HTML模板替换自定义HTML标记,而无需过多细节。但是它只支持
格式。不允许您使用
格式


我个人尽量避免使用
语法,因为它有可能使事情出错。(=)。

据我所知,它们是等价的。第一种方法不太冗长,可以为您节省几个字符。你有时也会看到我讨厌nil=“true”。就我而言,
意味着空白。完全省略元素意味着NULL。它只是保留标记并将其标记为空。但这是HTML,与XML不同。严格地说,(X)HTML是XML的一种方言。在某些情况下,浏览器解析可能更轻松,可以处理格式错误的文档,但…它仍然是XML。严格来说,XHTML是HTML和XML的扩展。但是,建议仅在从不包含内容的元素上使用自动关闭标记。例如,不要使用

,即使它在主要浏览器中工作()。然而HTML不是XML的方言,它是SGML的扩展。创建HTML时,XML甚至不作为规范存在。