DTD定义中的注释

时间:2018-05-29 10:04:12

标签: xml dtd sgml

在查看HTML 4 dtd(https://www.w3.org/TR/html4/sgml/dtd.html)时,我在dtd定义中看到了很多描述性注释。

  public Map<Boolean, String> findMetadata(String scanPackage) {
    Map<Boolean, String> metadatas = new HashMap<>();
    ClassPathScanningCandidateComponentProvider provider = createComponentScanner();
    for (BeanDefinition beanDef : provider.findCandidateComponents(scanPackage)) {
      try {
        Class<?> cl = Class.forName(beanDef.getBeanClassName());
        Indexable indexable = cl.getAnnotation(Indexable.class);
        logger.info("---------------------------- " + indexable.dictionary() + " " + indexable.indexName());
        if (!metadatas.containsValue(indexable.indexName())) {
          metadatas.put(indexable.dictionary(), indexable.indexName());
        }
      } catch (ClassNotFoundException e) {
        logger.error(ERROR + e);
      }
    }
    return metadatas;
  }

&GT;

我知道这是一个SGML dtd。当我尝试在我的XML dtds中引入它们时,我从处理器中解析出错误。是否已从XML的DTD变体中删除了这些注释?

<!ELEMENT A - - (%inline;)* -(A)       -- anchor -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- char encoding of linked     resource --
  type        %ContentType;  #IMPLIED  -- advisory content type --
  name        CDATA          #IMPLIED  -- named link end --
  href        %URI;          #IMPLIED  -- URI for linked resource --
  hreflang    %LanguageCode; #IMPLIED  -- language code --
  rel         %LinkTypes;    #IMPLIED  -- forward link types --
  rev         %LinkTypes;    #IMPLIED  -- reverse link types --
  accesskey   %Character;    #IMPLIED  -- accessibility key character     --
  shape       %Shape;        rect      -- for use with client-side     image maps --
  coords      %Coords;       #IMPLIED  -- for use with client-side image maps --
  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
  onfocus     %Script;       #IMPLIED  -- the element got the focus --
  onblur      %Script;       #IMPLIED  -- the element lost the focus --

2 个答案:

答案 0 :(得分:2)

在SGML中,以--开头和结尾的注释可以出现在标记声明中的任何地方或多次;在XML中,标记声明必须只包含一个注释或另一个标记声明:

<!-- valid in XML -->
<!-- only -- -- valid -- -- in -- -- SGML -->

由于XML被定义为SGML子集,因此不允许在任何地方的XML注释中显示文本字符串--

答案 1 :(得分:1)

根据X3 XML 1.0规范,DTD声明中允许注释。但是,它们是以"bar"开头并以<!--结尾的XML样式注释,如之前的评论员所述。有关语法详细信息,请参阅https://www.w3.org/TR/2008/REC-xml-20081126/#NT-DeclSep

但是,它们并未嵌入到元素或属性列表声明中,如上面的示例所示。 XHTML DTD中的示例使用带有注释的XML DTD语法描述元HTML标记。完整的dtd:https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd

-->