Logo Search packages:      
Sourcecode: jaxe version File versions  Download package

String jaxe::Config::expressionEspace ( final JaxeElement  parent,
final int  debutSelection,
final int  finSelection,
final Element  aInserer,
final boolean  testEspace,
final String  espaceParent 
) [inline, protected]

Renvoie l'expression régulière correspondant aux enfants d'un élément, en n'utilisant que les éléments ayant l'espace de noms du parent si testEspace est true, et en ajoutant aInserer à la place de se qui se trouve entre debutSelection et finSelection. Attention, aInserer doit maintenant être un élément du schéma (avant c'était un élément du fichier de config).

Definition at line 1347 of file Config.java.

References jaxe::JaxeElement::debut, jaxe::JaxeElement::doc, jaxe::JaxeElement::enfantApres(), jaxe::JaxeElement::fin, jaxe::JaxeDocument::getElementForNode(), localValue(), jaxe::JaxeElement::noeud, and nomElement().

Referenced by insertionPossible().

                                                                                         {
        boolean danslazone = parent.debut.getOffset() < debutSelection &&
                parent.fin.getOffset() >= finSelection;
        JaxeElement jcadet = null;
        if (danslazone)
            jcadet = parent.enfantApres(finSelection);
        StringBuilder cettexp = null;
        boolean insere = false;
        Node sousb = parent.noeud.getFirstChild();
        while (sousb != null) {
            if (sousb.getNodeType() == Node.ELEMENT_NODE || sousb.getNodeType() == Node.TEXT_NODE ||
                    sousb.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE ||
                    sousb.getNodeType() == Node.COMMENT_NODE ||
                    sousb.getNodeType() == Node.CDATA_SECTION_NODE)  {
                final JaxeElement je = parent.doc.getElementForNode(sousb);
                if (je != null && (je.debut.getOffset() < debutSelection || je.debut.getOffset() >= finSelection)) {
                    if (!testEspace || sousb.getNodeType() == Node.TEXT_NODE ||
                            sousb.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE ||
                            sousb.getNodeType() == Node.COMMENT_NODE ||
                            sousb.getNodeType() == Node.CDATA_SECTION_NODE ||
                            (espaceParent == null && sousb.getNamespaceURI() == null) ||
                            (espaceParent != null && espaceParent.equals(sousb.getNamespaceURI()))) {
                        final StringBuilder nomb = new StringBuilder();
                        if (sousb.getNodeType() == Node.ELEMENT_NODE) {
                            nomb.append(localValue(sousb.getNodeName()));
                            nomb.append(",");
                        }
                        if (je == jcadet && danslazone) {
                            nomb.insert(0, ",");
                            nomb.insert(0, nomElement(aInserer));
                            insere = true;
                        }
                        if (cettexp == null)
                            cettexp = new StringBuilder();
                        cettexp.append(nomb);
                    } else {
                        if (je == jcadet && danslazone) {
                            if (cettexp == null)
                                cettexp = new StringBuilder();
                            cettexp.append(nomElement(aInserer));
                            cettexp.append(",");
                            insere = true;
                        }
                        final String ex2 = expressionEspace(je, debutSelection, finSelection, aInserer, testEspace, espaceParent);
                        if (ex2 != null) {
                            if (cettexp == null)
                                cettexp = new StringBuilder();
                            cettexp.append(ex2);
                        }
                        if (je.debut.getOffset() < debutSelection &&
                                je.fin.getOffset() >= finSelection) {
                            insere = true;
                            danslazone = false;
                        }
                    }
                }
            }
            sousb = sousb.getNextSibling();
        }
        if (!insere && danslazone) {
            if (cettexp == null)
                cettexp = new StringBuilder();
            cettexp.append(nomElement(aInserer));
            cettexp.append(",");
        }
        if (cettexp == null)
            return(null);
        return(cettexp.toString());
    }


Generated by  Doxygen 1.6.0   Back to index