2008-11-12 6 views
3

Je voudrais modifier les fichiers XHTML en utilisant nxml-mode Emacs qui peut utiliser rnc schémas pour la validation à la volée. Tout est intégré aux nouvelles versions d'Emacs.RelaxNG (rnc) schéma pour étendre XHTML

Cependant, mes fichiers XHTML contiennent des éléments d'un autre schéma. Donc, < foo: foo > les balises sont valides, mais seulement dans le < xhtml: la tête > du document.

Actuellement, nxml se plaint car le schéma XHTML qu'il utilise ne décrit pas la balise foo. Comment puis-je créer un nouveau schéma qui décrit la balise foo par rapport au schéma XHTML existant, et comment puis-je appliquer ce schéma automatiquement en utilisant schema locating rules dans le fichier schemas.xml? Par exemple: Je voudrais valider un document en utilisant deux schémas simultanément: les règles XHTML intégrées et certaines règles personnalisées qui ajoutent certaines balises namespaced.

Répondre

2

Validator.nu a un preset schema qui est modifié à partir du jeu de schémas XHTML développé à l'origine par James Clark et l'un des ajouts est rdf: RDF en tête, donc le schéma pourrait être utile à étudier.

(je n'ai aucune expérience avec les problèmes de l'emplacement du schéma nxml-mode.)

2

Problème 1: Je crois que vous ne voulez pas deux schémas ici, mais plutôt un schéma qui « comprennent » s un autre, combiné avec les règles de priorité/combinaison décrites à la section 9.2 de the RelaxNG tutorial. Je me bats avec ça moi-même.

Problème 2: Je peux vous donner une meilleure réponse au deuxième problème; Le mode nxml recherche dans un des emplacements un fichier "schemas.xml" qui effectue une correspondance de modèle pour associer des fichiers à des schémas. J'ai pour la cartographie la plus simple possible, ce fichier dans le même répertoire que le fichier xml:

<?xml version='1.0'?> 
<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0"> 
    <uri resource="auto.xml" uri="lab.rnc"/> 
</locatingRules> 

Ce fichier associe le fichier « auto.xml » avec la spécification « de lab.rnc ».

2

Le W3C a exactement ce qu'il vous faut. Par exemple, voici le RNG pour XHTML + RDFa:

<?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> 

Références