2017-10-17 22 views
1

Je me rends compte des questions d'espace de noms sont un sou une douzaine, mais je reçois de Saxon:« règles de modèle correspondent à des éléments dans aucun espace de noms » un message

Attention SXXP0005: Le document source est dans l'espace de noms http://docbook.org/ns/docbook, b ut toutes les règles de modèle correspondent à éléments dans aucun espace de noms (utilisation --suppressXsltNamespaceChec k: cet avertissement sur
éviter)

L'élément racine de mon fichier source est:

<?xml version="1.0" encoding="UTF-8"?> 
    <topic xmlns:xi="http://www.w3.org/2001/XInclude" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://docbook.org/ns/docbook" 
    xml:id="103829"> 
    <info> 
     <title>My title</title> 
    </info> 
    <procedure> 
... 

Et mon XSL est:

<?xml version="1.0"?> 
<xsl:stylesheet version="2.0" 
    xmlns:xi="http://www.w3.org/2001/XInclude" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://docbook.org/ns/docbook"> 

<!-- Dummy template, just trying to match anything -->  
    <xsl:template match="procedure"> 
     <orderedlist> 
      SOME TEXT 
      <xsl:copy-of select="*"/> 
     </orderedlist> 
    </xsl:template> 

    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

Comme averti, le modèle ne correspond pas. Mais je ne sais pas pourquoi: Je pensais qu'avoir le même espace de noms par défaut dans le fichier source et le fichier XSL empêchait ce genre d'erreurs.

Aussi, je suppose que je pourrais déclarer un préfixe et l'appliquer à tous les éléments. Mais ne pas éviter les préfixes tout le point des espaces de noms par défaut?

Répondre

0

Vous pouvez utiliser (XSLT 2 et versions ultérieures) xpath-default-namespace="http://docbook.org/ns/docbook" sur votre xsl:stylesheet si vous souhaitez que votre modèle et vos expressions comme procedure correspondent/sélectionnent des éléments dans cet espace de noms. Sinon, procedure correspond/sélectionne les éléments de ce nom dans aucun espace de noms.

Un xmlns="http://docbook.org/ns/docbook" dans la feuille de style ne sert qu'à mettre les éléments de résultat (comme le orderedlist dans votre échantillon) dans cet espace de noms.