首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展XHTML ( RelaxNG )模式

扩展XHTML ( RelaxNG )模式
EN

Stack Overflow用户
提问于 2008-11-12 22:51:41
回答 3查看 880关注 0票数 3

我想使用Emacs的nxml-mode编辑XHTML文件,它可以使用rnc模式进行即时验证。这都是较新的Emacs版本中内置的。

但是,我的XHTML文件包含来自另一个模式的元素。因此,标记是有效的,但仅在文档的中有效。

目前,nxml抱怨是因为它使用的XHTML模式没有描述foo标记。如何创建一个新的模式来描述与现有XHTML模式相关的foo标记,以及如何在schemas.xml文件中使用schema locating rules自动应用该模式?

ie:我想同时使用两个模式来验证文档:内置的XHTML规则和一些添加了特定命名空间标签的自定义规则。

EN

回答 3

Stack Overflow用户

发布于 2008-11-12 23:03:08

Validator.nu有一个preset schema,它是从最初由James Clark开发的XHTML模式集修改而来的,其中一个新增内容是head中的rdf:RDF,因此研究该模式可能很有用。

(我没有处理nxml模式模式位置问题的经验。)

票数 2
EN

Stack Overflow用户

发布于 2010-06-21 03:18:12

问题1:我认为这里不需要两个模式,而是一个“包含”另一个模式,并结合the RelaxNG tutorial第9.2节中描述的覆盖/组合规则。我自己也在努力解决这个问题。

问题2:我可以更好地回答第二个问题;nxml-mode在许多位置中查找"schemas.xml“文件,该文件执行模式匹配以将文件与模式相关联。对于最简单的映射,我将这个文件放在与xml文件相同的目录中:

代码语言:javascript
复制
<?xml version='1.0'?>
<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
  <uri resource="auto.xml" uri="lab.rnc"/>
</locatingRules>

此文件将"auto.xml“文件与"lab.rnc”规范相关联。

票数 2
EN

Stack Overflow用户

发布于 2014-05-29 12:50:06

W3C正好有这样的东西。例如,以下是XHTML+RDFa的rng:

代码语言:javascript
复制
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- XHTML+RDFa 1.0 -->

<grammar ns="http://www.w3.org/1999/xhtml"
         xmlns="http://relaxng.org/ns/structure/1.0"
         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">

<include href="xhtml-datatypes-1.rng"/>
<include href="xhtml-attribs-1.rng"/>
<include href="xhtml-text-1.rng"/>
<include href="xhtml-list-1.rng"/>
<include href="xhtml-object-1.rng"/>
<include href="xhtml-pres-1.rng"/>
<include href="xhtml-edit-1.rng"/>
<include href="xhtml-bdo-1.rng"/>
<include href="xhtml-form-1.rng"/>
<include href="xhtml-table-1.rng"/>
<include href="xhtml-image-1.rng"/>
<include href="xhtml-ssismap-1.rng"/>
<include href="xhtml-events-1.rng"/>
<include href="xhtml-inlstyle-1.rng"/>
<include href="xhtml-base-1.rng"/>
<include href="xhtml-ruby-1.rng"/>
<include href="xhtml-metaAttributes-1.rng"/>

<define name="xhtml.Common.attrib" combine="interleave">
  <optional>
    <attribute name="href">
      <ref name="xhtml.URI.datatype"/>
    </attribute>
  </optional>
  <ref name="xhtml.Metainformation.attrib"/>
</define>

<include href="xhtml-hypertext-1.rng">
    <define name="xhtml.a.attlist">
      <ref name="xhtml.Common.attrib"/>
      <optional>
        <attribute name="charset">
          <ref name="xhtml.Charset.datatype"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="type">
          <ref name="xhtml.ContentType.datatype"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="hreflang">
          <ref name="xhtml.LanguageCode.datatype"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="accesskey">
          <ref name="xhtml.Character.datatype"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="tabindex">
          <ref name="xhtml.Number.datatype"/>
        </attribute>
      </optional>
    </define>
</include>

<include href="xhtml-link-1.rng">
    <define name="xhtml.link.attlist">
      <ref name="xhtml.Common.attrib"/>
      <optional>
        <attribute name="charset">
          <ref name="xhtml.Charset.datatype"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="hreflang">
          <ref name="xhtml.LanguageCode.datatype"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="type">
          <ref name="xhtml.ContentType.datatype"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="media">
          <ref name="xhtml.MediaDesc.datatype"/>
        </attribute>
      </optional>
    </define>
</include>

<include href="xhtml-meta-1.rng">
    <define name="xhtml.meta.attlist">
      <ref name="xhtml.Common.attrib"/>
      <optional>
        <attribute name="http-equiv">
          <data type="NMTOKEN"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="name">
          <data type="NMTOKEN"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="scheme">
          <text/>
        </attribute>
      </optional>
    </define>
</include>

<include href="xhtml-script-1.rng">
    <define name="xhtml.script.attlist">
      <ref name="xhtml.id.attrib"/>
      <ref name="xhtml.Metainformation.attrib"/>
      <optional>
        <attribute name="href">
          <ref name="xhtml.URI.datatype"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="charset">
          <ref name="xhtml.Charset.datatype"/>
        </attribute>
      </optional>
      <attribute name="type">
        <ref name="xhtml.ContentType.datatype"/>
      </attribute>
      <optional>
        <attribute name="src">
          <ref name="xhtml.URI.datatype"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="defer">
          <value>defer</value>
        </attribute>
      </optional>
      <optional>
        <attribute name="xml:space">
          <value>preserve</value>
        </attribute>
      </optional>
    </define>
</include>

<include href="xhtml-style-1.rng">
    <define name="xhtml.style.attlist">
      <ref name="xhtml.title.attrib"/>
      <ref name="xhtml.I18n.attrib"/>
      <ref name="xhtml.id.attrib"/>
      <ref name="xhtml.Metainformation.attrib"/>
      <optional>
        <attribute name="href">
          <ref name="xhtml.URI.datatype"/>
        </attribute>
      </optional>
      <attribute name="type">
        <ref name="xhtml.ContentType.datatype"/>
      </attribute>
      <optional>
        <attribute name="media">
          <ref name="xhtml.MediaDesc.datatype"/>
        </attribute>
      </optional>
      <!-- <optional>
        <attribute name="xml:space">
          <value>preserve</value>
        </attribute>
      </optional> -->
    </define>
</include>

<include href="xhtml-csismap-1.rng">
    <define name="xhtml.area.attlist">
      <ref name="xhtml.Common.attrib"/>
      <ref name="xhtml.shape.attrib"/>
      <ref name="xhtml.coords.attrib"/>
      <optional>
        <attribute name="nohref">
          <value>nohref</value>
        </attribute>
      </optional>
      <attribute name="alt">
        <ref name="xhtml.Text.datatype"/>
      </attribute>
      <optional>
        <attribute name="tabindex">
          <ref name="xhtml.Number.datatype"/>
        </attribute>
      </optional>
      <optional>
        <attribute name="accesskey">
          <ref name="xhtml.Character.datatype"/>
        </attribute>
      </optional>
    </define>
</include>

<include href="xhtml-param-1.rng">
    <define name="xhtml.param.attlist">
      <ref name="xhtml.id.attrib"/>
      <ref name="xhtml.Metainformation.attrib"/>
      <optional>
        <attribute name="href">
          <ref name="xhtml.URI.datatype"/>
        </attribute>
      </optional>
      <attribute name="name"/>
      <optional>
        <attribute name="value"/>
      </optional>
      <optional>
        <attribute name="valuetype">
          <choice>
        <value>data</value>
        <value>ref</value>
        <value>object</value>
          </choice>
        </attribute>
      </optional>
      <optional>
        <attribute name="type">
          <ref name="xhtml.ContentType.datatype"/>
        </attribute>
      </optional>
    </define>
</include>

<include href="xhtml-struct-1.rng">
    <define name="xhtml.title.attlist">
      <ref name="xhtml.Common.attrib"/>
    </define>

    <define name="xhtml.head.attlist">
      <ref name="xhtml.Common.attrib"/>
      <ref name="xhtml.profile.attlist"/>
    </define>

    <define name="xhtml.html.attlist">
      <ref name="xhtml.XHTML.version.attrib"/>
      <ref name="xhtml.Common.attrib"/>
    </define>
</include>

</grammar>

参考

  • XHTML Modularization for RelaxNG:Techniques for using RelaxNG to define and extend XHTML
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/285687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档