santiagopg    02/05/10 08:40:03

  Modified:    java/src/org/apache/xalan/xsltc/compiler ApplyTemplates.java
                        AttributeSet.java CallTemplate.java
                        DecimalFormatting.java EqualityExpr.java
                        FormatNumberCall.java Key.java KeyCall.java
                        Parser.java QName.java SymbolTable.java
                        Template.java UseAttributeSets.java
                        VariableBase.java xpath.cup
  Log:
  Fixed problem with default namespace in XPath expressions and XSLT's
  named objects (e.g. templates, keys, variables, etc.).
  
  Revision  Changes    Path
  1.14      +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ApplyTemplates.java
  
  Index: ApplyTemplates.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ApplyTemplates.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ApplyTemplates.java       24 Apr 2002 17:03:15 -0000      1.13
  +++ ApplyTemplates.java       10 May 2002 15:40:02 -0000      1.14
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: ApplyTemplates.java,v 1.13 2002/04/24 17:03:15 santiagopg Exp $
  + * @(#)$Id: ApplyTemplates.java,v 1.14 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -106,7 +106,7 @@
        }
        
        if (mode.length() > 0) {
  -         _modeName = parser.getQName(mode);
  +         _modeName = parser.getQNameIgnoreDefaultNs(mode);
        }
        
        // instantiate Mode if needed, cache (apply temp) function name
  
  
  
  1.11      +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AttributeSet.java
  
  Index: AttributeSet.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/AttributeSet.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AttributeSet.java 1 Feb 2002 20:07:08 -0000       1.10
  +++ AttributeSet.java 10 May 2002 15:40:02 -0000      1.11
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: AttributeSet.java,v 1.10 2002/02/01 20:07:08 tmiller Exp $
  + * @(#)$Id: AttributeSet.java,v 1.11 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -119,7 +119,7 @@
       public void parseContents(Parser parser) {
        
        // Get this attribute set's name
  -     _name = parser.getQName(getAttribute("name"));
  +     _name = parser.getQNameIgnoreDefaultNs(getAttribute("name"));
        if ((_name == null) || (_name.equals(EMPTYSTRING))) {
            ErrorMsg msg = new ErrorMsg(ErrorMsg.UNNAMED_ATTRIBSET_ERR, this);
            parser.reportError(Constants.ERROR, msg);
  
  
  
  1.10      +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/CallTemplate.java
  
  Index: CallTemplate.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/CallTemplate.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- CallTemplate.java 1 Feb 2002 20:07:08 -0000       1.9
  +++ CallTemplate.java 10 May 2002 15:40:02 -0000      1.10
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: CallTemplate.java,v 1.9 2002/02/01 20:07:08 tmiller Exp $
  + * @(#)$Id: CallTemplate.java,v 1.10 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -87,7 +87,7 @@
       }
   
       public void parseContents(Parser parser) {
  -     _name = parser.getQName(getAttribute("name"));
  +     _name = parser.getQNameIgnoreDefaultNs(getAttribute("name"));
        parseChildren(parser);
       }
                
  
  
  
  1.9       +13 -7     
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/DecimalFormatting.java
  
  Index: DecimalFormatting.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/DecimalFormatting.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DecimalFormatting.java    1 Feb 2002 20:07:08 -0000       1.8
  +++ DecimalFormatting.java    10 May 2002 15:40:02 -0000      1.9
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: DecimalFormatting.java,v 1.8 2002/02/01 20:07:08 tmiller Exp $
  + * @(#)$Id: DecimalFormatting.java,v 1.9 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -84,7 +84,7 @@
       private static final String DFS_CLASS = "java.text.DecimalFormatSymbols";
       private static final String DFS_SIG   = 
"Ljava/text/DecimalFormatSymbols;";
   
  -    private String _name = null;
  +    private QName _name = null;
   
       /**
        * No type check needed for the <xsl:decimal-formatting/> element
  @@ -98,14 +98,20 @@
        */
       public void parseContents(Parser parser) {
        // Get the name of these decimal formatting symbols
  -     if ((_name = getAttribute("name")) == null) _name = EMPTYSTRING;
  +     _name = parser.getQNameIgnoreDefaultNs(getAttribute("name"));
  +     if (_name == null) {
  +         _name = parser.getQNameIgnoreDefaultNs(EMPTYSTRING);
  +     }
   
        // Check if a set of symbols has already been registered under this name
        SymbolTable stable = parser.getSymbolTable();
  -     if (stable.getDecimalFormatting(_name) != null)
  -         reportWarning(this, parser, 
ErrorMsg.SYMBOLS_REDEF_ERR,_name.toString());
  -     else
  +     if (stable.getDecimalFormatting(_name) != null) {
  +         reportWarning(this, parser, ErrorMsg.SYMBOLS_REDEF_ERR,
  +             _name.toString());
  +     }
  +     else {
            stable.addDecimalFormatting(_name, this);
  +     }
       }
   
       /**
  @@ -122,7 +128,7 @@
   
        // Push the format name on the stack for call to addDecimalFormat()
        il.append(classGen.loadTranslet());
  -     il.append(new PUSH(cpg, _name));
  +     il.append(new PUSH(cpg, _name.toString()));
   
        // Manufacture a DecimalFormatSymbols on the stack
        // for call to addDecimalFormat()
  
  
  
  1.9       +2 -5      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/EqualityExpr.java
  
  Index: EqualityExpr.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/EqualityExpr.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- EqualityExpr.java 1 Feb 2002 20:07:08 -0000       1.8
  +++ EqualityExpr.java 10 May 2002 15:40:02 -0000      1.9
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: EqualityExpr.java,v 1.8 2002/02/01 20:07:08 tmiller Exp $
  + * @(#)$Id: EqualityExpr.java,v 1.9 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -101,10 +101,7 @@
       }
   
       public boolean getOp() {
  -     if (_op == Operators.NE)
  -         return false;
  -     else
  -         return true;
  +     return (_op != Operators.NE);
       }
   
       /**
  
  
  
  1.8       +14 -5     
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FormatNumberCall.java
  
  Index: FormatNumberCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FormatNumberCall.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- FormatNumberCall.java     24 Apr 2002 17:03:15 -0000      1.7
  +++ FormatNumberCall.java     10 May 2002 15:40:02 -0000      1.8
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: FormatNumberCall.java,v 1.7 2002/04/24 17:03:15 santiagopg Exp $
  + * @(#)$Id: FormatNumberCall.java,v 1.8 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -74,6 +74,7 @@
       private Expression _value;
       private Expression _format;
       private Expression _name;
  +    private QName      _resolvedQName = null;
   
       public FormatNumberCall(QName fname, Vector arguments) {
        super(fname, arguments);
  @@ -83,9 +84,8 @@
       }
   
       public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     // The stylesheet element only adds code to instanciate the
  -     // default DecimalFormat object if at least one format-number()
  -     // call exists in the stylesheet. We must signal this call...
  +
  +     // Inform stylesheet to instantiate a DecimalFormat object
        getStylesheet().numberFormattingUsed();
   
        final Type tvalue = _value.typeCheck(stable);
  @@ -98,7 +98,13 @@
        }
        if (argumentCount() == 3) {
            final Type tname = _name.typeCheck(stable);
  -         if (tname instanceof StringType == false) {
  +
  +         if (_name instanceof LiteralExpr) {
  +             final LiteralExpr literal = (LiteralExpr) _name;
  +             _resolvedQName = 
  +                 getParser().getQNameIgnoreDefaultNs(literal.getValue());
  +         }
  +         else if (tname instanceof StringType == false) {
                _name = new CastExpr(_name, Type.String);
            }
        }
  @@ -125,6 +131,9 @@
        il.append(classGen.loadTranslet());
        if (_name == null) {
            il.append(new PUSH(cpg, EMPTYSTRING));
  +     }
  +     else if (_resolvedQName != null) {
  +         il.append(new PUSH(cpg, _resolvedQName.toString()));
        }
        else {
            _name.translate(classGen, methodGen);
  
  
  
  1.11      +5 -9      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Key.java
  
  Index: Key.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Key.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Key.java  1 Feb 2002 20:07:08 -0000       1.10
  +++ Key.java  10 May 2002 15:40:02 -0000      1.11
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Key.java,v 1.10 2002/02/01 20:07:08 tmiller Exp $
  + * @(#)$Id: Key.java,v 1.11 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -87,7 +87,7 @@
       public void parseContents(Parser parser) {
   
        // Get the required attributes and parser XPath expressions
  -     _name = parser.getQName(getAttribute("name"));
  +     _name = parser.getQNameIgnoreDefaultNs(getAttribute("name"));
        _match = parser.parsePattern(this, "match", null);
        _use = parser.parseExpression(this, "use", null);
   
  @@ -111,12 +111,7 @@
        * @return The key's name (from the <xsl:key> elements 'name' attribute).
        */
       public String getName() {
  -     String name;
  -     if (_name.getPrefix() == null)
  -         name = _name.getLocalPart();
  -     else
  -         name = _name.getPrefix()+":"+_name.getLocalPart();
  -     return(name);
  +     return _name.toString();
       }
   
       /**
  @@ -191,7 +186,8 @@
   
        // Prepare to call buildKeyIndex(String name, int node, String value);
        il.append(classGen.loadTranslet());
  -     il.append(new PUSH(cpg, getName()));
  +     // il.append(new PUSH(cpg, getName()));
  +     il.append(new PUSH(cpg, _name.toString()));
        il.append(new ILOAD(parentNode.getIndex()));
   
        // Now get the node value and feck it on the parameter stack
  
  
  
  1.8       +31 -10    
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/KeyCall.java
  
  Index: KeyCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/KeyCall.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- KeyCall.java      1 Feb 2002 20:07:08 -0000       1.7
  +++ KeyCall.java      10 May 2002 15:40:02 -0000      1.8
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: KeyCall.java,v 1.7 2002/02/01 20:07:08 tmiller Exp $
  + * @(#)$Id: KeyCall.java,v 1.8 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -73,6 +73,7 @@
       private Expression _name;      // The name of this key
       private Expression _value;     // The value to look up in the key/index
       private Type       _valueType; // The value's data type
  +    private QName      _resolvedQName = null;
   
       /**
        * Get the parameters passed to function:
  @@ -117,7 +118,13 @@
        // and if it is not it must be converted to one using string() rules.
        if (_name != null) {
            final Type nameType = _name.typeCheck(stable); 
  -         if (!(nameType instanceof StringType)) {
  +
  +         if (_name instanceof LiteralExpr) {
  +             final LiteralExpr literal = (LiteralExpr) _name;
  +             _resolvedQName = 
  +                 getParser().getQNameIgnoreDefaultNs(literal.getValue());
  +         }
  +         else if (nameType instanceof StringType == false) {
                _name = new CastExpr(_name, Type.String);
            }
        }
  @@ -241,10 +248,15 @@
   
            // Initialise the index specified in the first parameter of key()
            il.append(classGen.loadTranslet());
  -         if (_name == null) 
  +         if (_name == null) {
                il.append(new PUSH(cpg,"##id"));
  -         else
  +         }
  +         else if (_resolvedQName != null) {
  +             il.append(new PUSH(cpg, _resolvedQName.toString()));
  +         }
  +         else {
                _name.translate(classGen, methodGen);
  +         }
   
            il.append(new INVOKEVIRTUAL(getKeyIndex));
            il.append(new ASTORE(searchIndex.getIndex()));
  @@ -265,10 +277,12 @@
            il.append(methodGen.loadDOM());
            il.append(methodGen.loadCurrentNode());
            il.append(new INVOKEINTERFACE(getNodeValue, 2));
  -         if (_name == null)
  +         if (_name == null) {
                il.append(new INVOKEVIRTUAL(lookupId));
  -         else
  +         }
  +         else {
                il.append(new INVOKEVIRTUAL(lookupKey));
  +         }
   
            // Call to returnIndex.merge(searchIndex);
            il.append(new INVOKEVIRTUAL(merge));
  @@ -295,10 +309,15 @@
            // Call getKeyIndex in AbstractTranslet with the name of the key
            // to get the index for this key (which is also a node iterator).
            il.append(classGen.loadTranslet());
  -         if (_name == null)
  +         if (_name == null) {
                il.append(new PUSH(cpg,"##id"));
  -         else
  +         }
  +         else if (_resolvedQName != null) {
  +             il.append(new PUSH(cpg, _resolvedQName.toString()));
  +         }
  +         else {
                _name.translate(classGen, methodGen);
  +         }
            il.append(new INVOKEVIRTUAL(getKeyIndex));
   
            // Now use the value in the second argument to determine what nodes
  @@ -318,10 +337,12 @@
                _value.translate(classGen, methodGen);
            }
   
  -         if (_name == null)
  +         if (_name == null) {
                il.append(new INVOKEVIRTUAL(lookupId));
  -         else
  +         }
  +         else {
                il.append(new INVOKEVIRTUAL(lookupKey));
  +         }
        }
       }
   }
  
  
  
  1.43      +15 -4     
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Parser.java
  
  Index: Parser.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Parser.java,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- Parser.java       6 May 2002 17:52:29 -0000       1.42
  +++ Parser.java       10 May 2002 15:40:02 -0000      1.43
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Parser.java,v 1.42 2002/05/06 17:52:29 santiagopg Exp $
  + * @(#)$Id: Parser.java,v 1.43 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -265,10 +265,20 @@
       }
       
       public QName getQName(final String stringRep) {
  -     return getQName(stringRep, true);    
  +     return getQName(stringRep, true, false);    
  +    }
  +
  +    public QName getQNameIgnoreDefaultNs(final String stringRep) {
  +     return getQName(stringRep, true, true);
       }
   
       public QName getQName(final String stringRep, boolean reportError) {
  +     return getQName(stringRep, reportError, false);
  +    }
  +
  +    private QName getQName(final String stringRep, boolean reportError,
  +     boolean ignoreDefaultNs) 
  +    {
        // parse and retrieve namespace
        final int colon = stringRep.lastIndexOf(':');
        if (colon != -1) {
  @@ -289,13 +299,14 @@
            return getQName(namespace, prefix, localname);
        }
        else {
  -         final String defURI = _symbolTable.lookupNamespace(EMPTYSTRING);
  +         final String defURI = ignoreDefaultNs ? null 
  +                               : _symbolTable.lookupNamespace(EMPTYSTRING);
            return getQName(defURI, null, stringRep);
        }
       }
   
       public QName getQName(String namespace, String prefix, String localname) 
{
  -     if (namespace == null) {
  +     if (namespace == null || namespace.equals(EMPTYSTRING)) {
            QName name = (QName)_qNames.get(localname);
            if (name == null) {
                name = new QName(null, prefix, localname);
  
  
  
  1.4       +8 -17     
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/QName.java
  
  Index: QName.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/QName.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- QName.java        19 Jun 2001 10:44:11 -0000      1.3
  +++ QName.java        10 May 2002 15:40:02 -0000      1.4
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: QName.java,v 1.3 2001/06/19 10:44:11 morten Exp $
  + * @(#)$Id: QName.java,v 1.4 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -75,22 +75,12 @@
        _namespace = namespace;
        _prefix    = prefix;
        _localname = localname;
  -     if ((namespace != null) && (!namespace.equals(Constants.EMPTYSTRING))) {
  -         _stringRep = namespace+':'+localname;
  -     }
  -     else {
  -         _stringRep = localname;
  -     }
   
  -     _hashCode  = _stringRep.hashCode() + 19; // cached for speed
  -    }
  +     _stringRep = 
  +         (namespace != null && !namespace.equals(Constants.EMPTYSTRING)) ?
  +         (namespace + ':' + localname) : localname;
   
  -    public void clearDefaultNamespace() {
  -     if ((_prefix == null) || (_prefix.equals(Constants.EMPTYSTRING))) {
  -         _namespace = null;
  -         _stringRep = _localname;
  -         _hashCode  = _stringRep.hashCode() + 19; // cached for speed
  -     }
  +     _hashCode  = _stringRep.hashCode() + 19; // cached for speed
       }
   
       public void clearNamespace() {
  @@ -106,7 +96,7 @@
       }
   
       public boolean equals(Object other) {
  -     return this == other;
  +     return (this == other);
       }
   
       public String getLocalPart() {
  @@ -126,6 +116,7 @@
       }
   
       public String dump() {
  -     return(new String("QName: "+_namespace+"("+_prefix+"):"+_localname));
  +     return new String("QName: " + _namespace + "(" + _prefix + "):" 
  +         + _localname);
       }
   }
  
  
  
  1.8       +3 -5      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/SymbolTable.java
  
  Index: SymbolTable.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/SymbolTable.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SymbolTable.java  24 Apr 2002 17:03:15 -0000      1.7
  +++ SymbolTable.java  10 May 2002 15:40:02 -0000      1.8
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: SymbolTable.java,v 1.7 2002/04/24 17:03:15 santiagopg Exp $
  + * @(#)$Id: SymbolTable.java,v 1.8 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -85,12 +85,12 @@
       private Hashtable _excludedURI = null;
       private Hashtable _decimalFormats = null;
   
  -    public DecimalFormatting getDecimalFormatting(String name) {
  +    public DecimalFormatting getDecimalFormatting(QName name) {
        if (_decimalFormats == null) return null;
        return((DecimalFormatting)_decimalFormats.get(name));
       }
   
  -    public void addDecimalFormatting(String name, DecimalFormatting symbols) 
{
  +    public void addDecimalFormatting(QName name, DecimalFormatting symbols) {
        if (_decimalFormats == null) _decimalFormats = new Hashtable();
        _decimalFormats.put(name, symbols);
       }
  @@ -105,14 +105,12 @@
   
       public Template addTemplate(Template template) {
        final QName name = template.getName();
  -     name.clearDefaultNamespace();
        if (_templates == null) _templates = new Hashtable();
        return (Template)_templates.put(name, template);
       }
        
       public Template lookupTemplate(QName name) {
        if (_templates == null) return null;
  -     name.clearDefaultNamespace();
        return (Template)_templates.get(name);
       }
   
  
  
  
  1.17      +3 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Template.java
  
  Index: Template.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Template.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Template.java     1 Feb 2002 20:07:08 -0000       1.16
  +++ Template.java     10 May 2002 15:40:02 -0000      1.17
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Template.java,v 1.16 2002/02/01 20:07:08 tmiller Exp $
  + * @(#)$Id: Template.java,v 1.17 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -245,11 +245,11 @@
        _stylesheet = super.getStylesheet();
   
        if (name.length() > 0) {
  -         _name = parser.getQName(name);
  +         _name = parser.getQNameIgnoreDefaultNs(name);
        }
        
        if (mode.length() > 0) {
  -         _mode = parser.getQName(mode);
  +         _mode = parser.getQNameIgnoreDefaultNs(mode);
        }
        
        if (match.length() > 0) {
  
  
  
  1.8       +3 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UseAttributeSets.java
  
  Index: UseAttributeSets.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/UseAttributeSets.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- UseAttributeSets.java     1 Feb 2002 20:07:09 -0000       1.7
  +++ UseAttributeSets.java     10 May 2002 15:40:02 -0000      1.8
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: UseAttributeSets.java,v 1.7 2002/02/01 20:07:09 tmiller Exp $
  + * @(#)$Id: UseAttributeSets.java,v 1.8 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -99,7 +99,8 @@
        if ((setNames != null) && (!setNames.equals(Constants.EMPTYSTRING))) {
            final StringTokenizer tokens = new StringTokenizer(setNames);
            while (tokens.hasMoreTokens()) {
  -             final QName qname = getParser().getQName(tokens.nextToken());
  +             final QName qname = 
  +                 getParser().getQNameIgnoreDefaultNs(tokens.nextToken());
                _sets.add(qname);
            }
        }
  
  
  
  1.16      +2 -3      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/VariableBase.java
  
  Index: VariableBase.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/VariableBase.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- VariableBase.java 6 May 2002 16:21:22 -0000       1.15
  +++ VariableBase.java 10 May 2002 15:40:02 -0000      1.16
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: VariableBase.java,v 1.15 2002/05/06 16:21:22 santiagopg Exp $
  + * @(#)$Id: VariableBase.java,v 1.16 2002/05/10 15:40:02 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -231,7 +231,6 @@
        */
       public void setName(QName name) {
        _name = name;
  -     _name.clearDefaultNamespace();
        _variable = Util.escape(name.getLocalPart());
       }
   
  @@ -251,7 +250,7 @@
        if (name == null) name = EMPTYSTRING;
   
        if (name.length() > 0)
  -         setName(parser.getQName(name));
  +         setName(parser.getQNameIgnoreDefaultNs(name));
           else
            reportError(this, parser, ErrorMsg.REQUIRED_ATTR_ERR, "name");
   
  
  
  
  1.36      +85 -75    
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/xpath.cup
  
  Index: xpath.cup
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/xpath.cup,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- xpath.cup 6 May 2002 17:52:29 -0000       1.35
  +++ xpath.cup 10 May 2002 15:40:03 -0000      1.36
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: xpath.cup,v 1.35 2002/05/06 17:52:29 santiagopg Exp $
  + * @(#)$Id: xpath.cup,v 1.36 2002/05/10 15:40:03 santiagopg Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -120,6 +120,10 @@
             return _parser.getQName(name);
       }    
   
  +    public QName getQNameIgnoreDefaultNs(String name) {
  +          return _parser.getQNameIgnoreDefaultNs(name);
  +    }    
  +
       public void setMultiDocument(boolean flag) {
             _xsltc.setMultiDocument(flag);
       }
  @@ -726,16 +730,18 @@
        /*
        * If the string appears to have the syntax of a QName, store 
        * namespace info in the literal expression. This is used for
  -     * element-available and function-available functions.
  +     * element-available and function-available functions, among
  +     * others. Also, the default namespace must be ignored.
        */
  +     String namespace = null;
        final int index = string.lastIndexOf(':');
  -     final String prefix = index >= 0
  -                                     ? string.substring(0, index)
  -                                     : Constants.EMPTYSTRING;
  -     String namespace = parser._symbolTable.lookupNamespace(prefix);
  -     RESULT = namespace == null
  -                         ? new LiteralExpr(string)
  -                         : new LiteralExpr(string, namespace); 
  +
  +     if (index > 0) {
  +         final String prefix = string.substring(0, index);
  +         namespace = parser._symbolTable.lookupNamespace(prefix);
  +     }
  +     RESULT = (namespace == null) ? new LiteralExpr(string)
  +                  : new LiteralExpr(string, namespace); 
        :}
   
           | INT:num
  @@ -785,49 +791,48 @@
               if (node == null) {
                   RESULT = new UnresolvedRef(varName);
               }
  -
           :};
   
   FunctionCall ::= FunctionName:fname LPAREN RPAREN
           {: 
   
  -          if (fname == parser.getQName("current")) {
  +          if (fname == parser.getQNameIgnoreDefaultNs("current")) {
               RESULT = new CurrentCall(fname);
          }
  -          else if (fname == parser.getQName("number")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
               RESULT = new NumberCall(fname, parser.EmptyArgs);
          }
  -          else if (fname == parser.getQName("string")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
               RESULT = new StringCall(fname, parser.EmptyArgs);
          }
  -          else if (fname == parser.getQName("concat")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
               RESULT = new ConcatCall(fname, parser.EmptyArgs);
          }
  -          else if (fname == parser.getQName("true")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("true")) {
               RESULT = new BooleanExpr(true);
          }
  -          else if (fname == parser.getQName("false")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("false")) {
               RESULT = new BooleanExpr(false);
          }
  -          else if (fname == parser.getQName("name")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("name")) {
               RESULT = new NameCall(fname);
          }
  -          else if (fname == parser.getQName("generate-id")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("generate-id")) {
               RESULT = new GenerateIdCall(fname, parser.EmptyArgs);
          }
  -          else if (fname == parser.getQName("string-length")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("string-length")) 
{
               RESULT = new StringLengthCall(fname, parser.EmptyArgs);
          }
  -          else if (fname == parser.getQName("position")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("position")) {
               RESULT = new PositionCall(fname);
          }
  -          else if (fname == parser.getQName("last")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("last")) {
               RESULT = new LastCall(fname);
          }
  -          else if (fname == parser.getQName("local-name")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("local-name")) {
               RESULT = new LocalNameCall(fname);
          }
  -          else if (fname == parser.getQName("namespace-uri")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("namespace-uri")) 
{
               RESULT = new NamespaceUriCall(fname);
          }
             else {
  @@ -837,74 +842,74 @@
   
           | FunctionName:fname LPAREN NonemptyArgumentList:argl RPAREN
           {:
  -          if (fname == parser.getQName("concat")) {
  +          if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
               RESULT = new ConcatCall(fname, argl);
          }
  -          else if (fname == parser.getQName("number")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
               RESULT = new NumberCall(fname, argl);
          }
  -          else if (fname == parser.getQName("document")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("document")) {
            parser.setMultiDocument(true);
               RESULT = new DocumentCall(fname, argl);
          }
  -          else if (fname == parser.getQName("string")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
               RESULT = new StringCall(fname, argl);
          }
  -          else if (fname == parser.getQName("boolean")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("boolean")) {
               RESULT = new BooleanCall(fname, argl);
          }
  -          else if (fname == parser.getQName("name")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("name")) {
               RESULT = new NameCall(fname, argl);
          }
  -          else if (fname == parser.getQName("generate-id")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("generate-id")) {
               RESULT = new GenerateIdCall(fname, argl);
          }
  -          else if (fname == parser.getQName("not")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("not")) {
               RESULT = new NotCall(fname, argl);
          }
  -          else if (fname == parser.getQName("format-number")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("format-number")) 
{
               RESULT = new FormatNumberCall(fname, argl);
          }
  -          else if (fname == parser.getQName("unparsed-entity-uri")) {
  +          else if (fname == 
parser.getQNameIgnoreDefaultNs("unparsed-entity-uri")) {
               RESULT = new UnparsedEntityUriCall(fname, argl);
          }
  -          else if (fname == parser.getQName("key")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("key")) {
               RESULT = new KeyCall(fname, argl);
          }
  -          else if (fname == parser.getQName("id")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("id")) {
               RESULT = new KeyCall(fname, argl);
          }
  -          else if (fname == parser.getQName("ceiling")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("ceiling")) {
               RESULT = new CeilingCall(fname, argl);
          }
  -          else if (fname == parser.getQName("round")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("round")) {
               RESULT = new RoundCall(fname, argl);
          }
  -          else if (fname == parser.getQName("floor")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("floor")) {
               RESULT = new FloorCall(fname, argl);
          }
  -          else if (fname == parser.getQName("contains")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("contains")) {
               RESULT = new ContainsCall(fname, argl);
          }
  -          else if (fname == parser.getQName("string-length")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("string-length")) 
{
               RESULT = new StringLengthCall(fname, argl);
          }
  -          else if (fname == parser.getQName("starts-with")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("starts-with")) {
               RESULT = new StartsWithCall(fname, argl);
          }
  -          else if (fname == parser.getQName("function-available")) {
  +          else if (fname == 
parser.getQNameIgnoreDefaultNs("function-available")) {
               RESULT = new FunctionAvailableCall(fname, argl);
          }
  -          else if (fname == parser.getQName("element-available")) {
  +          else if (fname == 
parser.getQNameIgnoreDefaultNs("element-available")) {
               RESULT = new ElementAvailableCall(fname, argl);
          }
  -          else if (fname == parser.getQName("local-name")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("local-name")) {
               RESULT = new LocalNameCall(fname, argl);
          }
  -          else if (fname == parser.getQName("lang")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("lang")) {
               RESULT = new LangCall(fname, argl);
          }
  -          else if (fname == parser.getQName("namespace-uri")) {
  +          else if (fname == parser.getQNameIgnoreDefaultNs("namespace-uri")) 
{
               RESULT = new NamespaceUriCall(fname, argl);
          }
          // Special case for extension function nodeset()
  @@ -928,18 +933,24 @@
           {: argl.insertElementAt(arg, 0); RESULT = argl; :};
   
   FunctionName ::= QName:fname
  -        {:
  -            fname.clearDefaultNamespace();
  -            RESULT = fname; 
  -        :};
  +        {: 
  +         final String prefix = fname.getPrefix();
  +         if (prefix == null || prefix.equals(Constants.EMPTYSTRING)) {
  +             fname = parser.getQNameIgnoreDefaultNs(fname.getLocalPart());
  +         }
  +         RESULT = fname; 
  +     :};
   
   VariableName ::= QName:vname
  -        {:
  -            vname.clearDefaultNamespace();
  -            RESULT = vname; 
  -        :};
  +        {: 
  +         final String prefix = vname.getPrefix();
  +         if (prefix == null || prefix.equals(Constants.EMPTYSTRING)) {
  +             vname = parser.getQNameIgnoreDefaultNs(vname.getLocalPart());
  +         }
  +         RESULT = vname; 
  +     :};
   
  -Argument ::=    Expr:ex
  +Argument ::= Expr:ex
           {: RESULT = ex; :};
   
   NodeTest ::= NameTest:nt
  @@ -956,14 +967,13 @@
   
           | PIPARAM LPAREN Literal:l RPAREN
           {:
  -           QName name = parser.getQName("name");
  +           QName name = parser.getQNameIgnoreDefaultNs("name");
              Expression exp = new EqualityExpr(Operators.EQ,
                                                new NameCall(name),
                                                new LiteralExpr(l));
              Vector predicates = new Vector();
              predicates.addElement(new Predicate(exp));
              RESULT = new Step(Axis.CHILD, NodeTest.PI, predicates);
  -                //RESULT = new Integer(NodeTest.PI);
           :}
   
           | PI
  @@ -978,54 +988,54 @@
   QName ::= QNAME:qname
           {: RESULT = parser.getQName(qname); :}
   
  -        | DIV
  -        {: RESULT = parser.getQName("div"); :}
  +     | DIV
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("div"); :}
   
           | MOD
  -        {: RESULT = parser.getQName("mod"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("mod"); :}
   
           | KEY
  -        {: RESULT = parser.getQName("key"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("key"); :}
   
           | ANCESTOR
  -        {: RESULT = parser.getQName("child"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("child"); :}
   
           | ANCESTORORSELF
  -        {: RESULT = parser.getQName("ancestor-or-self"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("ancestor-or-self"); :}
   
           | ATTRIBUTE
  -        {: RESULT = parser.getQName("attribute"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("attribute"); :}
   
           | CHILD
  -        {: RESULT = parser.getQName("child"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("child"); :}
   
           | DESCENDANT
  -        {: RESULT = parser.getQName("decendant"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("decendant"); :}
   
           | DESCENDANTORSELF
  -        {: RESULT = parser.getQName("decendant-or-self"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("decendant-or-self"); :}
   
           | FOLLOWING
  -        {: RESULT = parser.getQName("following"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("following"); :}
   
           | FOLLOWINGSIBLING
  -        {: RESULT = parser.getQName("following-sibling"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("following-sibling"); :}
   
           | NAMESPACE
  -        {: RESULT = parser.getQName("namespace"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("namespace"); :}
   
           | PARENT
  -        {: RESULT = parser.getQName("parent"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("parent"); :}
   
           | PRECEDING
  -        {: RESULT = parser.getQName("preceding"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("preceding"); :}
   
           | PRECEDINGSIBLING
  -        {: RESULT = parser.getQName("preceding-sibling"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("preceding-sibling"); :}
   
           | SELF
  -        {: RESULT = parser.getQName("self"); :}
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("self"); :}
   
           | ID
  -        {: RESULT = parser.getQName("id"); :};
  +        {: RESULT = parser.getQNameIgnoreDefaultNs("id"); :};
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to