';有效的xml';和';格式良好的xml';?

';有效的xml';和';格式良好的xml';?,xml,validation,xsd,dtd,Xml,Validation,Xsd,Dtd,我不知道有什么不同,但一位同事说有,尽管他无法证实。有什么区别吗?有区别,是的 符合的XML被认为是格式良好的,而符合的XML被认为是有效的。有效的XML是成功验证DTD的XML 格式良好的XML是一种XML,它以正确的顺序关闭所有标记,如果它有一个声明,那么它首先在文件中使用正确的属性 换句话说,有效性是指语义,良好形式是指语法 因此,可以使用无效的格式良好的XML。嗯,根据定义,格式不好的XML不是XML。人们通常将有效的XML称为遵循特定模式(XSD或DTD)的XML。我要补充的是,有效的

我不知道有什么不同,但一位同事说有,尽管他无法证实。有什么区别吗?

有区别,是的


符合的XML被认为是格式良好的,而符合的XML被认为是有效的。

有效的XML是成功验证DTD的XML

格式良好的XML是一种XML,它以正确的顺序关闭所有标记,如果它有一个声明,那么它首先在文件中使用正确的属性

换句话说,有效性是指语义,良好形式是指语法


因此,可以使用无效的格式良好的XML。

嗯,根据定义,格式不好的XML不是XML。人们通常将有效的XML称为遵循特定模式(XSD或DTD)的XML。

我要补充的是,有效的XML也意味着格式良好,但格式良好的XML不一定有效。

格式良好的XML是满足语言语法要求的XML。不丢失任何结束标记,让所有单例标记使用
,而不仅仅是
,并且让结束标记的顺序正确

有效XML是使用DTD并符合其所有要求的XML。因此,如果不正确地使用属性,则会违反DTD并且无效


所有有效的XML都是格式良好的,但并非所有格式良好的XML都是有效的。

如果XML满足标准中规定的所有XML文档的要求,那么XML就是格式良好的—因此,可以使用单个根节点、正确嵌套节点、所有节点都有结束标记(或使用闭合角括号前的斜杠的空节点缩写)、引用的属性等格式良好,只意味着它遵守XML规则,因此可以正确解析

如果XML将针对DTD或模式进行验证,则它是有效的。这显然因情况而异-针对一个模式有效的XML将不会针对另一个模式有效,即使它仍然格式良好


如果XML格式不正确,则无法正确解析它-解析器将简单地抛出异常或报告错误。这是通用的,与XML包含的内容无关。只有解析后才能检查其有效性。此域或上下文相关,并且需要DTD或模式进行验证。对于简单的XML文档,您可以你没有DTD或模式,在这种情况下,你无法知道XML是否有效——这个概念或有效性根本不适用于这种情况。当然,这并不意味着你不能使用它,只是意味着你无法判断它是否有效。

正如其他人所说,格式良好的XML符合XML规范,有效的XML符合给定的模式a

另一种说法是格式良好的XML在词汇上是正确的(它可以被解析),而有效的XML在语法上是正确的(它可以与已知的词汇和语法相匹配)


XML文档只有在格式良好时才有效。所有XML文档都遵循相同的格式良好标准(W3发布的RFC)。一个XML文档可以对某些模式有效,对其他模式无效。有许多模式语言,其中许多语言本身都是基于XML的。

除了上述DTD之外,还有两种描述和验证XML文档的其他方法是和,这两种方法可能更易于使用并支持更多功能而不是DTD。

如果XML符合DTD规则,则它是有效的XML。 如果XML文档符合XML规则(所有标记 开始是关闭的,有一个根元素等),然后它是一个
格式良好的XML。

DTD是文档类型定义的首字母缩略词。这是一系列XML文件内容的描述。这是XML 1.0规范的一部分,允许描述和验证给定文档实例是否符合详细说明其结构和内容的规则集

验证是根据DTD检查文档的过程(通常是根据一组构造规则)


验证过程和构建DTD是XML生命周期中最困难的两个部分。简单地说,DTD定义了文档中所有可能的元素,文档树的形式是什么(通过定义元素的允许内容;文本、允许的子元素列表的正则表达式或混合内容,即文本和子元素)。DTD还定义了所有元素的有效属性以及这些属性的类型。

W3C在XML规范中定义了创建XML文档时需要遵循的某些规则。此类规则的示例包括只有一个根元素,每个开始标记有结束标记,每个开始标记使用单引号/双引号如果一个XML文档遵循所有这些规则,那么它就是格式良好的文档,可以使用XML解析器来解析和处理这些文档

文档类型定义(DTD)或XML模式可用于定义特定类别的XML文档的结构和内容。这包括父子关系详细信息、属性列表、数据类型信息、值限制等。除了格式良好的规则外,如果XML文档也遵循关联DTD/模式中指定的规则,则为据说是一个有效的XML文档

所有有效的XML文档都是格式正确的,但反过来并不总是正确的。格式正确的XML文档不一定必须是有效的。

摘自:

[定义:如果数据对象是格式良好的,那么它就是XML文档,如下所示: 在本规范中定义。此外,XML文档是有效的 如果它满足某些进一步的限制条件。]


对于那些喜欢psuedo代码而不是一段接一段文本的人…:)

如果格式正确()那么
#它是格式良好的,可以是p
IF is_well_formed(<XML_doc>) THEN
    # It is well-formed, and can be parsed
    IF is_valid(<XML_doc>) THEN
        # Well-formed and ALSO valid. Hurray! 
        # **A valid XML doc, is a well-formed doc!**
    ELSE
        # Only well-formed, NOT valid
    END IF
ELSE
    # Not well-formed, or valid!
END IF

FUNCTION is_well_formed
    IF <does_not_contain_syntax,_spelling,_punctuation,_grammar_errors,_etc._errors> THEN
        RETURN TRUE
    ELSE 
        RETURN FALSE
    END IF
END FUNCTION 

FUNCTION is_valid
    IF <markup_of_the_XML_document_matches_"some"_defined_standard> THEN
        # Standards used to validate XML could be a DTDs or XML Schemas, referenced within the XML document
        RETURN TRUE
    ELSE 
        RETURN FALSE
    END IF
END FUNCTION