我最近看到一个包含<?var type="string" ?>
的XML字符串。我想知道是否有人知道这意味着什么?它与我想象的PHP有关。这是一个上下文片段。
<?xml version="1.0" encoding="UTF-8"?>
<node>
<?var type="string" ?>
<somenode>Value</somenode>
</node>
我似乎无法搜索谷歌<?var
所以也许你们可以帮助我。
答案 0 :(得分:7)
这是XML processing instruction,与PHP无关。 (无论如何,这不是合法的PHP语法。)您在文档开头看到的XML声明是一种特殊的PI。
我不能说除此之外,因为我老实说从来没有见过XML PI用作任何野外任何东西的XML PI。 <? ?>
分隔符通常被开发人员识别为PHP分隔符(带有短开头分隔符)。
实际上,正如评论中所讨论的那样,完整的PHP分隔符<?php ?>
可以被认为是一种处理指令,即使它们在XHTML / XML文档之外的许多其他地方使用。甚至可以说PHP通过处理指令设计符合XHTML标准。
事实上,以下带有PHP片段的XHTML标记实际上是validates!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<p><?php echo 'Hello world!'; ?></p>
</body>
</html>
但是,它不会使用短开始标记进行验证,因为XML PI必须以<?
开头,后跟至少一个名称字符。请参阅PI语法规范的第一个链接。
答案 1 :(得分:5)
这是zend 5-5学习指南中的内容。 问题是&#34;这个XML文档有什么问题?&#34;答案是&#34;没有&#34;
此页面包含第7行第7行的错误:XML declaration allowed only at the start of the document
。下面是第一个错误的页面呈现。
那么为什么学习指南说xml没什么问题?
<?xml version="1.0" encoding="UTF-8"?>
<node>
<?var type="string" ?>
<leaf>Value</leaf>
</node>
<?xml version="1.0" encoding="UTF-8"?>
<node>
<?var type="string" ?>
<leaf>Value</leaf>
</node>