jaxe
Class SchemaRelaxNG

java.lang.Object
  extended by jaxe.SchemaRelaxNG
All Implemented Interfaces:
InterfaceSchema

public class SchemaRelaxNG
extends java.lang.Object
implements InterfaceSchema

Schéma Relax NG : validation basée sur Jing


Nested Class Summary
private static class SchemaRelaxNG.TypeObjetSchema
           
 
Field Summary
private  Config cfg
           
private  java.util.ArrayList<org.w3c.dom.Element> elementsNommes
           
private  java.util.ArrayList<java.net.URI> fichiersInclus
           
private  java.util.HashMap<java.lang.String,java.lang.String> hashPrefixes
           
private  com.thaiopensource.validate.ValidationDriver jingInsertion
           
private  com.thaiopensource.validate.ValidationDriver jingValidation
           
private static org.apache.log4j.Logger LOG
           
private  java.util.ArrayList<org.w3c.dom.Element> ltousdefine
           
private  java.util.ArrayList<org.w3c.dom.Element> ltouselements
           
private  java.util.ArrayList<org.w3c.dom.Element> ltousref
           
private static java.util.ResourceBundle rb
           
private  org.w3c.dom.Element schema
           
private  java.lang.String schemaNamespace
           
private  java.lang.String targetNamespace
           
 
Constructor Summary
SchemaRelaxNG(java.net.URL schemaURL, Config cfg)
           
 
Method Summary
private static void addNodeList(java.util.ArrayList<org.w3c.dom.Element> l, org.w3c.dom.NodeList nl)
          Ajoute tous les éléments d'une NodeList à une ArrayList de Element, en supposant que tous les éléments de la NodeList sont des org.w3c.dom.Element.
 boolean aEspace(java.lang.String espace)
          Renvoie true si l'espace de nom est défini dans le schéma
 boolean attributValide(org.w3c.dom.Element refAttribut, java.lang.String valeur)
          Renvoie true si la valeur donnée est une valeur valide pour l'attribut
private  org.w3c.dom.Element chercherPremier(SchemaRelaxNG.TypeObjetSchema type, java.lang.String nom)
          Renvoie le premier objet du schéma avec le type et le nom donnés, ou null si rien de correspondant n'est trouvé.
private  org.w3c.dom.Element chercherPremier(SchemaRelaxNG.TypeObjetSchema type, java.lang.String nom, java.lang.String espace)
          Renvoie le premier objet du schéma avec le type, le nom et l'espace de noms donnés, ou null si rien de correspondant n'est trouvé.
 boolean contientDuTexte(org.w3c.dom.Element refElement)
          Renvoie true si l'élément dont on donne la référence peut contenir du texte
 java.lang.String documentationAttribut(org.w3c.dom.Element refAttribut)
          Renvoie la documentation d'un attribut à partir de sa référence
 java.lang.String documentationElement(org.w3c.dom.Element refElement)
          Renvoie la documentation d'un élément dont on donne la référence (sous forme de texte simple, ou de HTML 3 pour faire des sauts de lignes)
 boolean documentValide(org.w3c.dom.Document domdoc, boolean insertion)
          Renvoie true si le document DOM domdoc est valide.
 boolean elementDansSchema(org.w3c.dom.Element refElement)
          Renvoie true si la référence vient de ce schéma
 boolean elementObligatoire(org.w3c.dom.Element refParent, org.w3c.dom.Element refEnfant)
          Renvoit true si l'enfant est obligatoire sous le parent.
private  java.util.ArrayList<org.w3c.dom.Element> enfants(org.w3c.dom.Element parent, java.lang.String tag)
          Renvoie la liste des éléments enfants d'un élément donné ayant un nom donné (getElementsByTagName renvoit tous les descendants, alors qu'ici on cherche juste les enfants de premier niveau)
 boolean enfantsMultiples(org.w3c.dom.Element refParent, org.w3c.dom.Element refEnfant)
          Renvoit true si le parent peut avoir des enfants multiples avec la référence refEnfant.
 java.lang.String espaceAttribut(org.w3c.dom.Element refAttribut)
          Renvoie l'espace de noms d'un attribut à partir de sa référence
 java.lang.String espaceAttribut(java.lang.String nomAttribut)
          Renvoie l'espace de noms d'un attribut à partir de son nom complet (avec le préfixe s'il y en a un)
 java.lang.String espaceCible()
          Renvoie l'espace de noms cible du schéma (attribut targetNamespace avec WXS)
 java.lang.String espaceElement(org.w3c.dom.Element refElement)
          Renvoie l'espace de nom de l'élément dont la référence est passée en paramètre, un String vide si targetNamespace est vide, ou null si l'espace de noms n'est pas défini.
 boolean estObligatoire(org.w3c.dom.Element refAttribut)
          Renvoie true si un attribut est obligatoire, à partir de sa définition
 java.lang.String expressionReguliere(org.w3c.dom.Element refParent, boolean modevisu, boolean modevalid)
          Expression régulière correspondant au schéma pour un élément parent donné
private static java.net.URL getParentURL(java.net.URL u)
          Renvoie l'url du répertoire parent du fichier ou répertoire correspondant à l'URL donnée, ou null si l'on ne peut pas déterminer le répertoire parent.
private  org.w3c.dom.Element inclusion1(java.net.URL urls)
          Chargement d'un schéma en mémoire.
private  void inclusion2(org.w3c.dom.Element sch, java.net.URL schemadir)
          Chargement d'un schéma en mémoire.
 java.util.ArrayList<org.w3c.dom.Element> listeAttributs(org.w3c.dom.Element refElement)
          Renvoie la liste des références des attributs possibles pour un élément dont on donne la référence en paramètre
 java.util.ArrayList<org.w3c.dom.Element> listeElementsDansEspaces(java.util.Set<java.lang.String> espaces)
          Renvoie les références des éléments qui sont dans les espaces de noms passés en paramètre
 java.util.ArrayList<org.w3c.dom.Element> listeElementsHorsEspace(java.lang.String espace)
          Renvoie les références des éléments qui ne sont pas dans l'espace de noms passé en paramètre
 java.util.ArrayList<org.w3c.dom.Element> listeElementsParents(org.w3c.dom.Element refElement)
          Renvoie la liste des références des parents possibles pour un élément dont la référence est passée en paramètre
 java.util.ArrayList<java.lang.String> listeEspaces()
          Renvoie la liste des espaces de noms (String) utilisés par ce schéma.
 java.util.ArrayList<org.w3c.dom.Element> listeSousElements(org.w3c.dom.Element refParent)
          Renvoie les références des éléments enfants de l'élément dont la référence est passée en paramètre
private  java.util.ArrayList<org.w3c.dom.Element> listeTous(org.w3c.dom.Element parent, java.lang.String tag)
          Renvoie une ArrayList avec tous les éléments descendants d'un élément parent ayant un nom donné.
 java.util.ArrayList<org.w3c.dom.Element> listeTousElements()
          Renvoie les références de tous les éléments du schéma
 java.util.ArrayList<java.lang.String> listeValeursAttribut(org.w3c.dom.Element refAttribut)
          Renvoie la liste des valeurs possibles pour un attribut, à partir de sa référence.
private static java.lang.String localValue(java.lang.String s)
          Renvoie la partie locale du nom d'un élément (en retirant le préfixe)
 java.lang.String nomAttribut(org.w3c.dom.Element refAttribut)
          Renvoie le nom d'un attribut à partir de sa référence
 java.lang.String nomElement(org.w3c.dom.Element refElement)
          Renvoie le nom de l'élément dont la référence est donnée.
 org.w3c.dom.Element parentAttribut(org.w3c.dom.Element refAttribut)
          Renvoie la référence du premier élément parent d'un attribut à partir de sa référence
 java.lang.String prefixeElement(org.w3c.dom.Element refElement)
          Renvoie le préfixe à utiliser pour créer un élément dont on donne la référence, ou null s'il n'y en a pas.
 java.lang.String prefixeEspace(java.lang.String espace)
          Renvoie un préfixe à utiliser pour l'espace de noms donné, ou null si aucune suggestion n'est possible
private static java.lang.String prefixeString(java.lang.String nom)
          Renvoie le préfixe d'un nom, ou null s'il n'en a pas.
 org.w3c.dom.Element referenceElement(org.w3c.dom.Element el)
          Renvoie la référence du premier élément du schéma avec le nom et l'espace de noms de l'élément passé en paramètre.
 org.w3c.dom.Element referenceElement(org.w3c.dom.Element el, org.w3c.dom.Element refParent)
          Renvoie la référence du premier élément du schéma avec le nom et l'espace de noms de l'élément passé en paramètre, et avec le parent dont la référence est passée en paramètre.
 org.w3c.dom.Element referenceElement(java.lang.String nom)
          Renvoie la référence du premier élément du schéma avec le nom donné.
private  org.w3c.dom.Element referenceElement(java.lang.String nom, java.lang.String espace)
          Renvoie la référence du premier élément du schéma avec le nom et l'espace de noms passés en paramètre.
 java.lang.String valeurParDefaut(org.w3c.dom.Element refAttribut)
          Renvoie la valeur par défaut d'un attribut dont la référence est donnée en paramètre
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOG

private static final org.apache.log4j.Logger LOG

rb

private static final java.util.ResourceBundle rb

cfg

private Config cfg

schema

private final org.w3c.dom.Element schema

schemaNamespace

private java.lang.String schemaNamespace

targetNamespace

private java.lang.String targetNamespace

ltouselements

private final java.util.ArrayList<org.w3c.dom.Element> ltouselements

elementsNommes

private final java.util.ArrayList<org.w3c.dom.Element> elementsNommes

ltousref

private final java.util.ArrayList<org.w3c.dom.Element> ltousref

ltousdefine

private final java.util.ArrayList<org.w3c.dom.Element> ltousdefine

hashPrefixes

private java.util.HashMap<java.lang.String,java.lang.String> hashPrefixes

fichiersInclus

private final java.util.ArrayList<java.net.URI> fichiersInclus

jingValidation

private com.thaiopensource.validate.ValidationDriver jingValidation

jingInsertion

private com.thaiopensource.validate.ValidationDriver jingInsertion
Constructor Detail

SchemaRelaxNG

public SchemaRelaxNG(java.net.URL schemaURL,
                     Config cfg)
Method Detail

inclusion1

private org.w3c.dom.Element inclusion1(java.net.URL urls)
Chargement d'un schéma en mémoire. Appelle inclusion2.

Parameters:
urls - URL du fichier du schéma WXS

getParentURL

private static java.net.URL getParentURL(java.net.URL u)
Renvoie l'url du répertoire parent du fichier ou répertoire correspondant à l'URL donnée, ou null si l'on ne peut pas déterminer le répertoire parent.


inclusion2

private void inclusion2(org.w3c.dom.Element sch,
                        java.net.URL schemadir)
Chargement d'un schéma en mémoire. Appelé par inclusion1.

Parameters:
sch - L'élément racine du schéma WXS
schemadir - URL du répertoire de référence (dans lequel se trouve le fichier du schéma)

elementDansSchema

public boolean elementDansSchema(org.w3c.dom.Element refElement)
Renvoie true si la référence vient de ce schéma

Specified by:
elementDansSchema in interface InterfaceSchema

referenceElement

public org.w3c.dom.Element referenceElement(java.lang.String nom)
Renvoie la référence du premier élément du schéma avec le nom donné.

Specified by:
referenceElement in interface InterfaceSchema

referenceElement

public org.w3c.dom.Element referenceElement(org.w3c.dom.Element el)
Renvoie la référence du premier élément du schéma avec le nom et l'espace de noms de l'élément passé en paramètre.

Specified by:
referenceElement in interface InterfaceSchema

referenceElement

private org.w3c.dom.Element referenceElement(java.lang.String nom,
                                             java.lang.String espace)
Renvoie la référence du premier élément du schéma avec le nom et l'espace de noms passés en paramètre.


referenceElement

public org.w3c.dom.Element referenceElement(org.w3c.dom.Element el,
                                            org.w3c.dom.Element refParent)
Renvoie la référence du premier élément du schéma avec le nom et l'espace de noms de l'élément passé en paramètre, et avec le parent dont la référence est passée en paramètre. Bug avec RelaxNG et les modèles qui dépendent des valeurs des attributs...

Specified by:
referenceElement in interface InterfaceSchema

nomElement

public java.lang.String nomElement(org.w3c.dom.Element refElement)
Renvoie le nom de l'élément dont la référence est donnée.

Specified by:
nomElement in interface InterfaceSchema

espaceElement

public java.lang.String espaceElement(org.w3c.dom.Element refElement)
Renvoie l'espace de nom de l'élément dont la référence est passée en paramètre, un String vide si targetNamespace est vide, ou null si l'espace de noms n'est pas défini.

Specified by:
espaceElement in interface InterfaceSchema

documentationElement

public java.lang.String documentationElement(org.w3c.dom.Element refElement)
Renvoie la documentation d'un élément dont on donne la référence (sous forme de texte simple, ou de HTML 3 pour faire des sauts de lignes)

Specified by:
documentationElement in interface InterfaceSchema

prefixeElement

public java.lang.String prefixeElement(org.w3c.dom.Element refElement)
Renvoie le préfixe à utiliser pour créer un élément dont on donne la référence, ou null s'il n'y en a pas.

Specified by:
prefixeElement in interface InterfaceSchema

listeEspaces

public java.util.ArrayList<java.lang.String> listeEspaces()
Renvoie la liste des espaces de noms (String) utilisés par ce schéma.

Specified by:
listeEspaces in interface InterfaceSchema

aEspace

public boolean aEspace(java.lang.String espace)
Renvoie true si l'espace de nom est défini dans le schéma

Specified by:
aEspace in interface InterfaceSchema

prefixeEspace

public java.lang.String prefixeEspace(java.lang.String espace)
Renvoie un préfixe à utiliser pour l'espace de noms donné, ou null si aucune suggestion n'est possible

Specified by:
prefixeEspace in interface InterfaceSchema

espaceCible

public java.lang.String espaceCible()
Renvoie l'espace de noms cible du schéma (attribut targetNamespace avec WXS)

Specified by:
espaceCible in interface InterfaceSchema

listeElementsHorsEspace

public java.util.ArrayList<org.w3c.dom.Element> listeElementsHorsEspace(java.lang.String espace)
Renvoie les références des éléments qui ne sont pas dans l'espace de noms passé en paramètre

Specified by:
listeElementsHorsEspace in interface InterfaceSchema

listeElementsDansEspaces

public java.util.ArrayList<org.w3c.dom.Element> listeElementsDansEspaces(java.util.Set<java.lang.String> espaces)
Renvoie les références des éléments qui sont dans les espaces de noms passés en paramètre

Specified by:
listeElementsDansEspaces in interface InterfaceSchema

listeTousElements

public java.util.ArrayList<org.w3c.dom.Element> listeTousElements()
Renvoie les références de tous les éléments du schéma

Specified by:
listeTousElements in interface InterfaceSchema

elementObligatoire

public boolean elementObligatoire(org.w3c.dom.Element refParent,
                                  org.w3c.dom.Element refEnfant)
Renvoit true si l'enfant est obligatoire sous le parent.

Specified by:
elementObligatoire in interface InterfaceSchema

enfantsMultiples

public boolean enfantsMultiples(org.w3c.dom.Element refParent,
                                org.w3c.dom.Element refEnfant)
Renvoit true si le parent peut avoir des enfants multiples avec la référence refEnfant.

Specified by:
enfantsMultiples in interface InterfaceSchema

listeSousElements

public java.util.ArrayList<org.w3c.dom.Element> listeSousElements(org.w3c.dom.Element refParent)
Renvoie les références des éléments enfants de l'élément dont la référence est passée en paramètre

Specified by:
listeSousElements in interface InterfaceSchema

expressionReguliere

public java.lang.String expressionReguliere(org.w3c.dom.Element refParent,
                                            boolean modevisu,
                                            boolean modevalid)
Expression régulière correspondant au schéma pour un élément parent donné

Specified by:
expressionReguliere in interface InterfaceSchema
Parameters:
modevisu - True si on cherche une expression régulière à afficher pour l'utilisateur
modevalid - Pour obtenir une validation stricte au lieu de chercher si une insertion est possible

documentValide

public boolean documentValide(org.w3c.dom.Document domdoc,
                              boolean insertion)
Renvoie true si le document DOM domdoc est valide. Si insertion est true, teste juste la validité d'une insertion (tous les éléments sont optionnels).


listeElementsParents

public java.util.ArrayList<org.w3c.dom.Element> listeElementsParents(org.w3c.dom.Element refElement)
Renvoie la liste des références des parents possibles pour un élément dont la référence est passée en paramètre

Specified by:
listeElementsParents in interface InterfaceSchema

listeAttributs

public java.util.ArrayList<org.w3c.dom.Element> listeAttributs(org.w3c.dom.Element refElement)
Renvoie la liste des références des attributs possibles pour un élément dont on donne la référence en paramètre

Specified by:
listeAttributs in interface InterfaceSchema

nomAttribut

public java.lang.String nomAttribut(org.w3c.dom.Element refAttribut)
Renvoie le nom d'un attribut à partir de sa référence

Specified by:
nomAttribut in interface InterfaceSchema

espaceAttribut

public java.lang.String espaceAttribut(org.w3c.dom.Element refAttribut)
Renvoie l'espace de noms d'un attribut à partir de sa référence

Specified by:
espaceAttribut in interface InterfaceSchema

documentationAttribut

public java.lang.String documentationAttribut(org.w3c.dom.Element refAttribut)
Renvoie la documentation d'un attribut à partir de sa référence

Specified by:
documentationAttribut in interface InterfaceSchema

espaceAttribut

public java.lang.String espaceAttribut(java.lang.String nomAttribut)
Renvoie l'espace de noms d'un attribut à partir de son nom complet (avec le préfixe s'il y en a un)

Specified by:
espaceAttribut in interface InterfaceSchema

estObligatoire

public boolean estObligatoire(org.w3c.dom.Element refAttribut)
Renvoie true si un attribut est obligatoire, à partir de sa définition

Specified by:
estObligatoire in interface InterfaceSchema

listeValeursAttribut

public java.util.ArrayList<java.lang.String> listeValeursAttribut(org.w3c.dom.Element refAttribut)
Renvoie la liste des valeurs possibles pour un attribut, à partir de sa référence. Renvoie null s'il y a un nombre infini de valeurs possibles.

Specified by:
listeValeursAttribut in interface InterfaceSchema

valeurParDefaut

public java.lang.String valeurParDefaut(org.w3c.dom.Element refAttribut)
Renvoie la valeur par défaut d'un attribut dont la référence est donnée en paramètre

Specified by:
valeurParDefaut in interface InterfaceSchema

attributValide

public boolean attributValide(org.w3c.dom.Element refAttribut,
                              java.lang.String valeur)
Renvoie true si la valeur donnée est une valeur valide pour l'attribut

Specified by:
attributValide in interface InterfaceSchema

parentAttribut

public org.w3c.dom.Element parentAttribut(org.w3c.dom.Element refAttribut)
Renvoie la référence du premier élément parent d'un attribut à partir de sa référence

Specified by:
parentAttribut in interface InterfaceSchema

contientDuTexte

public boolean contientDuTexte(org.w3c.dom.Element refElement)
Renvoie true si l'élément dont on donne la référence peut contenir du texte

Specified by:
contientDuTexte in interface InterfaceSchema

chercherPremier

private org.w3c.dom.Element chercherPremier(SchemaRelaxNG.TypeObjetSchema type,
                                            java.lang.String nom,
                                            java.lang.String espace)
Renvoie le premier objet du schéma avec le type, le nom et l'espace de noms donnés, ou null si rien de correspondant n'est trouvé.


chercherPremier

private org.w3c.dom.Element chercherPremier(SchemaRelaxNG.TypeObjetSchema type,
                                            java.lang.String nom)
Renvoie le premier objet du schéma avec le type et le nom donnés, ou null si rien de correspondant n'est trouvé.


localValue

private static java.lang.String localValue(java.lang.String s)
Renvoie la partie locale du nom d'un élément (en retirant le préfixe)


prefixeString

private static java.lang.String prefixeString(java.lang.String nom)
Renvoie le préfixe d'un nom, ou null s'il n'en a pas.


addNodeList

private static void addNodeList(java.util.ArrayList<org.w3c.dom.Element> l,
                                org.w3c.dom.NodeList nl)
Ajoute tous les éléments d'une NodeList à une ArrayList de Element, en supposant que tous les éléments de la NodeList sont des org.w3c.dom.Element.


enfants

private java.util.ArrayList<org.w3c.dom.Element> enfants(org.w3c.dom.Element parent,
                                                         java.lang.String tag)
Renvoie la liste des éléments enfants d'un élément donné ayant un nom donné (getElementsByTagName renvoit tous les descendants, alors qu'ici on cherche juste les enfants de premier niveau)


listeTous

private java.util.ArrayList<org.w3c.dom.Element> listeTous(org.w3c.dom.Element parent,
                                                           java.lang.String tag)
Renvoie une ArrayList avec tous les éléments descendants d'un élément parent ayant un nom donné.