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
这个xml是有效的吗?_Xml_Xml Parsing - Fatal编程技术网

这个xml是有效的吗?

这个xml是有效的吗?,xml,xml-parsing,Xml,Xml Parsing,我和我的同事就xml的有效性发生了争论。 我非常确信xml节点可以有文本或其他xml节点,但不能同时有: 换句话说,这是一个有效的xml吗?(我是说不是) 废话 某些节点内容 废话废话一些文字 非计数 废话废话一些文字B 编辑:我的同事认为,既然.dtd文件中有#PCDATA,那么: <!ELEMENT dt (#PCDATA | test0 | test1 | test2 | test3)* > 这意味着其中可能有其他xml标记以及文本 这是格式良好的XML。文本节点是完

我和我的同事就xml的有效性发生了争论。 我非常确信xml节点可以有文本或其他xml节点,但不能同时有:

换句话说,这是一个有效的xml吗?(我是说不是)


废话
某些节点内容
废话废话一些文字
非计数
废话废话一些文字B
编辑:我的同事认为,既然.dtd文件中有#PCDATA,那么:

<!ELEMENT dt (#PCDATA | test0 | test1 | test2 | test3)* >

这意味着其中可能有其他xml标记以及文本

这是格式良好的XML。文本节点是完全好的,如果其他节点是混合的,也可以称为

有效的XML需要定义代码段中缺少的XML架构或DTD。如果您添加一个禁止混合内容的XML,它将保持格式良好的XML,只是不遵循该模式。

您是不正确的

XML内容可以包含元素和文本(字符数据)的混合


在任何XHTML文档中都可以找到这样的例子。

在XML中,格式良好的东西和有效的东西是有区别的。有时人们说“有效”是指格式良好,这令人困惑。XML是一组用于构造词汇表的语法规则。XML本身并没有说明允许哪些元素和属性,也没有说明可以将它们放在哪里。如果文档遵循XML语法,那么它是格式良好的。您的示例是格式良好的XML

有效性意味着所使用的特定元素和属性都是按照某种DTD或模式使用的。您给出了以下示例DTD代码段:

<!ELEMENT dt (#PCDATA | test0 | test1 | test2 | test3)* >

您的同事认为您提供的XML根据DTD是有效的,这是正确的(当然,假设所有测试元素的内容都是有效的)。如果您的DTD看起来像这样:

<!ELEMENT dt (test0 | test1 | test2 | test3)* >

那么你的例子将是无效的,但它仍然是格式良好的


在实际操作中,混合文本和子元素是非常常见的。

这是有效的。您可以这样使用在线验证程序:为什么PHP的simpleXml解析器在与文本混合时会剥离这些内联标记?HTML文档不一定是有效的XML文档。Slaks说的是XHTML,而不是HTML。XHTML文档从定义上讲是格式良好的XML文档。为什么PHP的simpleXml解析器在与文本混合时会剥离这些内联标记?@user2568737我建议您询问该软件的创建者。我还建议您阅读格式规范,而不是依赖于您喜欢的随机软件的行为。
<!ELEMENT dt (test0 | test1 | test2 | test3)* >