mmidy       00/08/04 15:26:30

  Modified:    java/src/org/apache/xalan/dtm DTMLiaison.java
               java/src/org/apache/xalan/stree DocumentImpl.java
                        ElementImpl.java SourceTreeHandler.java
               java/src/org/apache/xalan/templates FuncKey.java
                        StylesheetComposed.java
               java/src/org/apache/xalan/transformer KeyIterator.java
                        KeyManager.java KeyTable.java TransformerImpl.java
               java/src/org/apache/xalan/utils DOMBuilder.java
  Added:       java/src/org/apache/xalan/stree StreeDOMBuilder.java
  Log:
  Miscellaneous fixes for ID and key.
  
  Revision  Changes    Path
  1.4       +8 -0      xml-xalan/java/src/org/apache/xalan/dtm/DTMLiaison.java
  
  Index: DTMLiaison.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/dtm/DTMLiaison.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DTMLiaison.java   2000/08/01 18:22:52     1.3
  +++ DTMLiaison.java   2000/08/04 22:26:24     1.4
  @@ -288,6 +288,14 @@
     {
       return ((DTMProxy)doc).getDTM().getIdentifier(id);
     }
  +  
  +  public void setIDAttribute(String namespaceURI,
  +                             String qualifiedName,
  +                             String value,
  +                             Element elem)
  +  {
  +    
((org.apache.xalan.stree.DocumentImpl)this.getDocument()).setIDAttribute(namespaceURI,
 qualifiedName, value, elem);
  +  }
   
     /**
      * The getUnparsedEntityURI function returns the URI of the unparsed
  
  
  
  1.2       +26 -0     
xml-xalan/java/src/org/apache/xalan/stree/DocumentImpl.java
  
  Index: DocumentImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/stree/DocumentImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DocumentImpl.java 2000/06/19 16:52:35     1.1
  +++ DocumentImpl.java 2000/08/04 22:26:25     1.2
  @@ -12,6 +12,9 @@
   import org.w3c.dom.DocumentType;
   import org.w3c.dom.DOMException;
   
  +import java.util.Hashtable;
  +
  +
   public class DocumentImpl extends Parent
   {
     DocumentImpl()
  @@ -98,6 +101,21 @@
       return m_docElement;
     }
     
  +  Hashtable m_idAttributes = new Hashtable();
  +  
  +  public Hashtable getIDAttributes()
  +  {
  +    return m_idAttributes;
  +  } 
  +  
  +  public void setIDAttribute(String namespaceURI,
  +                             String qualifiedName,
  +                             String value,
  +                             Element elem)
  +  {
  +    m_idAttributes.put(value, elem);
  +  }
  +  
     /**
      * Append a child to the child list.
      * @param newChild Must be a org.apache.xalan.stree.Child.
  @@ -206,6 +224,14 @@
       throws DOMException
     {
       return super.createAttributeNS(namespaceURI, qualifiedName);
  +  }
  +  
  +  /**
  +   * Given an ID, return the element.
  +   */
  +  public Element getElementById(String elementId)
  +  {
  +    return (Element)m_idAttributes.get(elementId);    
     }
     
     
  
  
  
  1.8       +7 -0      
xml-xalan/java/src/org/apache/xalan/stree/ElementImpl.java
  
  Index: ElementImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/stree/ElementImpl.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ElementImpl.java  2000/07/31 19:18:58     1.7
  +++ ElementImpl.java  2000/08/04 22:26:25     1.8
  @@ -189,6 +189,13 @@
       }        
     }
     
  +  public void setIDAttribute(String namespaceURI,
  +                                           String qualifiedName,
  +                                           String value)
  +  {
  +    getDocumentImpl().setIDAttribute(namespaceURI, qualifiedName, value, 
this);
  +  }
  +  
     /**
      *  Create an attribute node. 
      */
  
  
  
  1.5       +1 -1      
xml-xalan/java/src/org/apache/xalan/stree/SourceTreeHandler.java
  
  Index: SourceTreeHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/stree/SourceTreeHandler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SourceTreeHandler.java    2000/08/04 19:36:41     1.4
  +++ SourceTreeHandler.java    2000/08/04 22:26:25     1.5
  @@ -106,7 +106,7 @@
       ((DocumentImpl)m_root).setSourceTreeHandler(this);
       ((DocumentImpl)m_root).setUid(1);
       ((DocumentImpl)m_root).setLevel(new Integer(1).shortValue());
  -    m_sourceTreeHandler = new DOMBuilder(m_root);
  +    m_sourceTreeHandler = new StreeDOMBuilder(m_root);
       setShouldStripWhitespace(false);
       
       if(m_useMultiThreading && (null != m_transformer))
  
  
  
  1.1                  
xml-xalan/java/src/org/apache/xalan/stree/StreeDOMBuilder.java
  
  Index: StreeDOMBuilder.java
  ===================================================================
  package org.apache.xalan.stree;
  
  import org.apache.xalan.utils.DOMBuilder;
  
  import org.w3c.dom.Document;
  import org.w3c.dom.DocumentFragment;
  import org.w3c.dom.Node;
  import org.w3c.dom.Element;
  
  public class StreeDOMBuilder extends DOMBuilder
  {
    
    /**
     * StreeDOMBuilder instance constructor... it will add the DOM nodes 
     * to the document fragment.
     */
    public StreeDOMBuilder(Document doc, Node node)
    {
      super(doc, node);
    }
  
    /**
     * StreeDOMBuilder instance constructor... it will add the DOM nodes 
     * to the document fragment.
     */
    public StreeDOMBuilder(Document doc, DocumentFragment docFrag)
    {
      super( doc, docFrag);
    }
  
    /**
     * StreeDOMBuilder instance constructor... it will add the DOM nodes 
     * to the document.
     */
    public StreeDOMBuilder(Document doc)
    {
      super(doc);
    }
    
    public void setIDAttribute(String namespaceURI,
                               String qualifiedName,
                               String value,
                               Element elem)
    {
      ((DocumentImpl)this.getRootNode()).setIDAttribute(namespaceURI,
                                                        qualifiedName,
                                                        value, elem);
    }
  
  }
  
  
  
  1.3       +1 -0      
xml-xalan/java/src/org/apache/xalan/templates/FuncKey.java
  
  Index: FuncKey.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/FuncKey.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FuncKey.java      2000/07/05 14:40:25     1.2
  +++ FuncKey.java      2000/08/04 22:26:26     1.3
  @@ -144,6 +144,7 @@
           upi.addIterator(nl);
           //mnodeset.addNodesInDocOrder(nl, xctxt); needed??
         }
  +      upi.initContext(xctxt);
         nodes = new XNodeSet(upi);
       }
       else
  
  
  
  1.4       +2 -2      
xml-xalan/java/src/org/apache/xalan/templates/StylesheetComposed.java
  
  Index: StylesheetComposed.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/StylesheetComposed.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- StylesheetComposed.java   2000/07/05 14:40:30     1.3
  +++ StylesheetComposed.java   2000/08/04 22:26:28     1.4
  @@ -334,7 +334,7 @@
       int nImports = getImportCountComposed();
       for(int i = -1; i < nImports; i++)
       {
  -      StylesheetComposed stylesheet = (i == i) ? this : getImportComposed(i);
  +      StylesheetComposed stylesheet = (i < 0) ? this : getImportComposed(i);
         // Does this stylesheet contain it?
         int nKeys = stylesheet.getKeyCount();
         for(int keyIndex = 0; keyIndex < nKeys; keyIndex++)
  @@ -348,7 +348,7 @@
         for(int k = 0; k < nIncludes; k++)
         {
           Stylesheet included = stylesheet.getIncludeComposed(k);
  -        nKeys = included.getDecimalFormatCount();
  +        nKeys = included.getKeyCount();
           for(int keyIndex = 0; keyIndex < nKeys; keyIndex++)
           {
             KeyDeclaration keyDecl = included.getKey(keyIndex);
  
  
  
  1.3       +2 -1      
xml-xalan/java/src/org/apache/xalan/transformer/KeyIterator.java
  
  Index: KeyIterator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/KeyIterator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- KeyIterator.java  2000/07/05 14:42:51     1.2
  +++ KeyIterator.java  2000/08/04 22:26:29     1.3
  @@ -58,7 +58,8 @@
     {
       // System.out.println("setLookupKey - lookupKey: "+lookupKey);
       ((KeyWalker)m_firstWalker).m_lookupKey = lookupKey;
  -    m_firstWalker.setRoot(getContext());
  +    m_firstWalker.setRoot((this.getContext().getNodeType()== 
Node.DOCUMENT_NODE) ? 
  +                          this.getContext() : 
this.getContext().getOwnerDocument());
       this.setLastUsedWalker(m_firstWalker);
       this.setNextPosition(0);
     }  
  
  
  
  1.3       +1 -1      
xml-xalan/java/src/org/apache/xalan/transformer/KeyManager.java
  
  Index: KeyManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/KeyManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- KeyManager.java   2000/07/05 14:42:52     1.2
  +++ KeyManager.java   2000/08/04 22:26:29     1.3
  @@ -100,7 +100,7 @@
           for(int i = 0; i < nKeyTables; i++)
           {
             KeyTable kt = (KeyTable)m_key_tables.elementAt(i);
  -          if(doc == kt.getDocKey())
  +          if(kt.getKeyTableName().equals(name) &&  doc == kt.getDocKey())
             {
               nl = kt.getNodeSetByKey(name, ref);
               if (nl != null)
  
  
  
  1.3       +5 -0      
xml-xalan/java/src/org/apache/xalan/transformer/KeyTable.java
  
  Index: KeyTable.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/KeyTable.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- KeyTable.java     2000/07/05 14:42:52     1.2
  +++ KeyTable.java     2000/08/04 22:26:29     1.3
  @@ -147,6 +147,11 @@
       
       return ki;
     }
  +  
  +  public QName getKeyTableName()
  +  {
  +    return m_keyIter.getName();
  +  }  
   
     
   }
  
  
  
  1.12      +16 -4     
xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java
  
  Index: TransformerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- TransformerImpl.java      2000/08/02 19:33:26     1.11
  +++ TransformerImpl.java      2000/08/04 22:26:29     1.12
  @@ -89,6 +89,7 @@
   import org.apache.xalan.utils.NodeVector;
   import org.apache.xalan.utils.BoolStack;
   import org.apache.xalan.utils.QName;
  +import org.apache.xalan.utils.PrefixResolver;
   
   import org.apache.xpath.XPathContext;
   import org.apache.xpath.NodeSet;
  @@ -179,6 +180,7 @@
     {
       setStylesheet(stylesheet);
       setXPathContext(new XPathContext(this));
  +    getXPathContext().setNamespaceContext(stylesheet);
     }
     
     /**
  @@ -291,7 +293,7 @@
           }
           
           // Get the input content handler, which will handle the 
  -        // parse events and create the source tree.
  +        // parse events and create the source tree. 
           ContentHandler inputHandler = getInputContentHandler();
           reader.setContentHandler( inputHandler );
           reader.setProperty("http://xml.org/sax/properties/lexical-handler";, 
inputHandler);
  @@ -1030,9 +1032,19 @@
       {
         // Find the XSL template that is the best match for the 
         // element.        
  -      template = stylesheetTree.getTemplateComposed(xctxt, 
  -                                                    child, mode,
  -                                                    
getQuietConflictWarnings());
  +      PrefixResolver savedPrefixResolver = xctxt.getNamespaceContext();
  +      try
  +      {
  +        xctxt.setNamespaceContext(xslInstruction);
  +
  +        template = stylesheetTree.getTemplateComposed(xctxt, 
  +                                                      child, mode,
  +                                                      
getQuietConflictWarnings());
  +      }
  +      finally
  +      {
  +        xctxt.setNamespaceContext(savedPrefixResolver);
  +      }
         
         // If that didn't locate a node, fall back to a default template rule.
         // See http://www.w3.org/TR/xslt#built-in-rule.
  
  
  
  1.5       +13 -0     xml-xalan/java/src/org/apache/xalan/utils/DOMBuilder.java
  
  Index: DOMBuilder.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/utils/DOMBuilder.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DOMBuilder.java   2000/08/01 04:41:57     1.4
  +++ DOMBuilder.java   2000/08/04 22:26:30     1.5
  @@ -277,6 +277,11 @@
       int nAtts = atts.getLength();
       for(int i = 0; i < nAtts; i++)
       {
  +      //System.out.println("type " + atts.getType(i) + " name " + 
atts.getLocalName(i) );
  +      // First handle a possible ID attribute
  +      if (atts.getType(i).equalsIgnoreCase("ID"))
  +        setIDAttribute(atts.getURI(i), atts.getLocalName(i), 
atts.getValue(i), elem);
  +      
         String attrNS = atts.getURI(i);
         // System.out.println("attrNS: "+attrNS+", localName: 
"+atts.getQName(i)
         //                   +", qname: "+atts.getQName(i)+", value: 
"+atts.getValue(i));
  @@ -321,6 +326,14 @@
       {
         m_currentNode = null;
       }
  +  }
  +  
  +  public void setIDAttribute(String namespaceURI,
  +                             String qualifiedName,
  +                             String value,
  +                             Element elem)
  +  {
  +    // Do nothing. This method is meant to be overiden.
     }
   
     /**
  
  
  

Reply via email to