在XML字符串中看到<! - ?var type =“string”? - >,但这是什么意思?

时间:2011-10-27 23:45:25

标签: xml

我最近看到一个包含<?var type="string" ?>的XML字符串。我想知道是否有人知道这意味着什么?它与我想象的PHP有关。这是一个上下文片段。

<?xml version="1.0" encoding="UTF-8"?>
<node>
   <?var type="string" ?>
   <somenode>Value</somenode>
</node>

我似乎无法搜索谷歌<?var所以也许你们可以帮助我。

2 个答案:

答案 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;

我想这部分是用于PHP代码,但重复的xml声明似乎很奇怪所以我把这个xml放在一个文件中并在我的浏览器中打开并出现错误:

此页面包含第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>