我想使用Emacs的nxml-mode编辑XHTML文件,它可以使用rnc模式进行即时验证。这都是较新的Emacs版本中内置的。
但是,我的XHTML文件包含来自另一个模式的元素。因此,标记是有效的,但仅在文档的中有效。
目前,nxml抱怨是因为它使用的XHTML模式没有描述foo标记。如何创建一个新的模式来描述与现有XHTML模式相关的foo标记,以及如何在schemas.xml文件中使用schema locating rules自动应用该模式?
ie:我想同时使用两个模式来验证文档:内置的XHTML规则和一些添加了特定命名空间标签的自定义规则。
发布于 2008-11-12 23:03:08
Validator.nu有一个preset schema,它是从最初由James Clark开发的XHTML模式集修改而来的,其中一个新增内容是head中的rdf:RDF,因此研究该模式可能很有用。
(我没有处理nxml模式模式位置问题的经验。)
发布于 2010-06-21 03:18:12
问题1:我认为这里不需要两个模式,而是一个“包含”另一个模式,并结合the RelaxNG tutorial第9.2节中描述的覆盖/组合规则。我自己也在努力解决这个问题。
问题2:我可以更好地回答第二个问题;nxml-mode在许多位置中查找"schemas.xml“文件,该文件执行模式匹配以将文件与模式相关联。对于最简单的映射,我将这个文件放在与xml文件相同的目录中:
<?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”规范相关联。
发布于 2014-05-29 12:50:06
W3C正好有这样的东西。例如,以下是XHTML+RDFa的rng:
<?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>参考
https://stackoverflow.com/questions/285687
复制相似问题