代码之家  ›  专栏  ›  技术社区  ›  ALTAF

我们为什么要写<!Hibernate配置或映射文件中的DOCTYPE>标记

  •  1
  • ALTAF  · 技术社区  · 6 年前

    要验证xml,我们需要dtd或xsd。如果我们想根据dtd验证xml,那么我们需要编写这个。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    

    当我们的dtd存在于文件系统中时使用系统,如果我们的dtd存在于某处网络中,则使用公共。在这种情况下,如果我们写这个

    "http://hibernate.org/dtd/hibernate-configuration-3.0.dtd"
    意味着我们的dtd存在于具有此地址的网络中,并且我们的hibernate配置xml文件将根据此dtd进行验证。

    但为什么要写这个???????

    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

    所以请回答我的问题。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Community THelper    4 年前

    价值观 -//Hibernate/Hibernate Configuration DTD 3.0//EN 在DOCTYPE中是 Formal Public Identifier 。它唯一标识 PUBLIC external entity ,并可用于解析URI引用。

    除了系统标识符之外,外部标识符还可以包括 公共标识符

    试图检索实体内容的XML处理器可以使用公共标识符和系统标识符的任何组合以及本规范范围之外的其他信息来尝试生成替代URI引用。如果处理器无法执行此操作,则必须使用系统文本中指定的URI引用。在尝试匹配之前,必须将公共标识符中的所有空格字符串规范化为单空格字符(#x20),并且必须删除前导和尾随空格。

    此外,一个很好的参考资料解释了FPI的组件: https://www.quackit.com/xml/tutorial/dtd_fpi.cfm

    这是一个真实的FPI示例。在本例中,DTD是由W3C为XHTML创建的:

    -//W3C//DTD XHTML 1.0 Transitional//EN

    FPI由4个字段组成,每个字段由两个正斜杠分隔( // ):

    1. - 指示DTD是否连接到正式标准。如果DTD尚未批准(例如,您自己定义了DTD),请使用hypen(-)。如果DTD已获得非标准机构的批准,请使用加号“+”。如果DTD已获得正式标准机构的批准,则该字段应为标准本身的参考。

    2. W3C 保留负责DTD的组(或人员)的名称。上述示例由W3C维护,因此“W3C”出现在第二个字段中。

    3. DTD XHTML 1.0 Transitional 指示正在描述的文档类型。这通常包含某种形式的唯一标识符(例如版本号)。

    4. EN 指定DTD使用的语言。这是通过使用语言的两个字母标识符来实现的(即,对于英语,使用“EN”)。

        2
  •  0
  •   beingmanish    6 年前

    Doctype描述XML文件遵循的DTD/XSD。

    它指示允许在其他元素中包含哪些元素(用于验证)。

    它还决定可用的命名字符引用(除了 &amp; ,则, &lt; ,则, &gt; ,则, &apos; &quot; )