hillion     01/10/18 05:30:23

  Modified:    sources/org/apache/batik/bridge
                        SVGAltGlyphElementBridge.java SVGFontUtilities.java
                        URIResolver.java
               sources/org/apache/batik/css AbstractViewCSS.java
                        CSSOMStyleRule.java HiddenChildElement.java
                        HiddenChildElementSupport.java
               sources/org/apache/batik/dom
                        StyleSheetProcessingInstruction.java
               sources/org/apache/batik/dom/svg AbstractElement.java
                        SVGOMDocument.java XMLBaseSupport.java
  Added:       sources/org/apache/batik/css ExtendedLinkStyle.java
               sources/org/apache/batik/dom/svg
                        SVGStyleSheetProcessingInstruction.java
  Log:
  Base URIs now supported in CSS.
  
  Revision  Changes    Path
  1.8       +3 -3      
xml-batik/sources/org/apache/batik/bridge/SVGAltGlyphElementBridge.java
  
  Index: SVGAltGlyphElementBridge.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGAltGlyphElementBridge.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGAltGlyphElementBridge.java     2001/10/12 07:33:09     1.7
  +++ SVGAltGlyphElementBridge.java     2001/10/18 12:30:22     1.8
  @@ -28,7 +28,7 @@
    * Bridge class for the <altGlyph> element.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Bella Robinson</a>
  - * @version $Id: SVGAltGlyphElementBridge.java,v 1.7 2001/10/12 07:33:09 hillion 
Exp $
  + * @version $Id: SVGAltGlyphElementBridge.java,v 1.8 2001/10/18 12:30:22 hillion 
Exp $
    */
   public class SVGAltGlyphElementBridge extends AbstractSVGBridge
                                         implements ErrorConstants {
  @@ -103,7 +103,7 @@
               if (!isLocal) {
                   // need to attach the imported element to the document and
                   // then compute the styles and uris
  -                String base = XMLBaseSupport.getXMLBase(altGlyphElement);
  +                String base = XMLBaseSupport.getCascadedXMLBase(altGlyphElement);
                   Element g = document.createElementNS(SVG_NAMESPACE_URI, SVG_G_TAG);
                   g.appendChild(localRefElement);
                   g.setAttributeNS(XMLBaseSupport.XML_NAMESPACE_URI,
  @@ -253,7 +253,7 @@
               // import the whole font
               Element localFontElement
                   = (Element)document.importNode(refGlyphElement.getParentNode(), 
true);
  -            String base = XMLBaseSupport.getXMLBase(altGlyphElement);
  +            String base = XMLBaseSupport.getCascadedXMLBase(altGlyphElement);
               Element g = document.createElementNS(SVG_NAMESPACE_URI, SVG_G_TAG);
               g.appendChild(localFontElement);
               g.setAttributeNS(XMLBaseSupport.XML_NAMESPACE_URI,
  
  
  
  1.8       +2 -2      xml-batik/sources/org/apache/batik/bridge/SVGFontUtilities.java
  
  Index: SVGFontUtilities.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGFontUtilities.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGFontUtilities.java     2001/10/12 07:33:09     1.7
  +++ SVGFontUtilities.java     2001/10/18 12:30:22     1.8
  @@ -28,7 +28,7 @@
    * Utility class for SVG fonts.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Bella Robinson</a>
  - * @version $Id: SVGFontUtilities.java,v 1.7 2001/10/12 07:33:09 hillion Exp $
  + * @version $Id: SVGFontUtilities.java,v 1.8 2001/10/18 12:30:22 hillion Exp $
    */
   public abstract class SVGFontUtilities implements SVGConstants {
   
  @@ -134,7 +134,7 @@
                                   fontElement = (isLocal) ? refElement
                                       : (Element)document.importNode(refElement, 
true);
                                   if (!isLocal) {
  -                                    String base = 
XMLBaseSupport.getXMLBase(fontFaceUriElement);
  +                                    String base = 
XMLBaseSupport.getCascadedXMLBase(fontFaceUriElement);
                                       // need to attach the imported
                                       // element to the document and
                                       // then compute the styles and
  
  
  
  1.12      +2 -2      xml-batik/sources/org/apache/batik/bridge/URIResolver.java
  
  Index: URIResolver.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/URIResolver.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- URIResolver.java  2001/10/15 14:50:23     1.11
  +++ URIResolver.java  2001/10/18 12:30:22     1.12
  @@ -28,7 +28,7 @@
    * This class is used to resolve the URI that can be found in a SVG document.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: URIResolver.java,v 1.11 2001/10/15 14:50:23 deweese Exp $
  + * @version $Id: URIResolver.java,v 1.12 2001/10/18 12:30:22 hillion Exp $
    */
   public class URIResolver {
       /**
  @@ -87,7 +87,7 @@
       public Node getNode(String uri, Element ref)
           throws MalformedURLException, IOException {
   
  -        String baseURI = XMLBaseSupport.getXMLBase(ref);
  +        String baseURI = XMLBaseSupport.getCascadedXMLBase(ref);
           if ((baseURI == null) &&
               (uri.startsWith("#")))
               return document.getElementById(uri.substring(1));
  
  
  
  1.20      +93 -29    xml-batik/sources/org/apache/batik/css/AbstractViewCSS.java
  
  Index: AbstractViewCSS.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/css/AbstractViewCSS.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- AbstractViewCSS.java      2001/10/17 14:47:26     1.19
  +++ AbstractViewCSS.java      2001/10/18 12:30:22     1.20
  @@ -9,6 +9,10 @@
   package org.apache.batik.css;
   
   import java.lang.ref.SoftReference;
  +
  +import java.net.MalformedURLException;
  +import java.net.URL;
  +
   import java.util.HashMap;
   import java.util.Iterator;
   import java.util.LinkedList;
  @@ -17,6 +21,7 @@
   
   import org.apache.batik.css.sac.ExtendedSelector;
   import org.apache.batik.css.value.ImmutableInherit;
  +import org.apache.batik.css.value.ImmutableString;
   import org.apache.batik.css.value.RelativeValueResolver;
   import org.apache.batik.util.SoftDoublyIndexedTable;
   
  @@ -26,6 +31,7 @@
   import org.w3c.dom.Node;
   import org.w3c.dom.css.CSSImportRule;
   import org.w3c.dom.css.CSSMediaRule;
  +import org.w3c.dom.css.CSSPrimitiveValue;
   import org.w3c.dom.css.CSSRule;
   import org.w3c.dom.css.CSSRuleList;
   import org.w3c.dom.css.CSSStyleDeclaration;
  @@ -45,7 +51,7 @@
    * {@link org.w3c.dom.css.ViewCSS} interface.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: AbstractViewCSS.java,v 1.19 2001/10/17 14:47:26 hillion Exp $
  + * @version $Id: AbstractViewCSS.java,v 1.20 2001/10/18 12:30:22 hillion Exp $
    */
   public abstract class AbstractViewCSS implements ViewCSS {
   
  @@ -174,7 +180,7 @@
                                                         String pseudoElt) {
           CSSOMReadOnlyStyleDeclaration result;
           if (elt instanceof HiddenChildElement) {
  -            result = ((HiddenChildElement)elt).getCascadedStyle();
  +            result = ((HiddenChildElement)elt).getStyleDeclaration();
               if (result != null) {
                   return new CSSOMReadOnlyStyleDeclaration(result);
               }
  @@ -195,10 +201,19 @@
   
           addUserAgentProperties(elt, pseudoElt, result);
           addUserProperties(elt, pseudoElt, result);
  -        addNonCSSPresentationalHints(elt, pseudoElt, result);
  +
  +        URL baseURI = null;
  +        if (elt instanceof ElementWithBaseURI) {
  +            try {
  +                baseURI = new URL(((ElementWithBaseURI)elt).getBaseURI());
  +            } catch (MalformedURLException e) {
  +            }
  +        }
  +
  +        addNonCSSPresentationalHints(elt, pseudoElt, baseURI, result);
           addAuthorStyleSheetProperties(elt, pseudoElt, result);
  -        addInlineStyleProperties(elt, pseudoElt, result);
  -        addOverrideStyleProperties(elt, pseudoElt, result);
  +        addInlineStyleProperties(elt, pseudoElt, baseURI, result);
  +        addOverrideStyleProperties(elt, pseudoElt, baseURI, result);
   
        return result;
       }
  @@ -258,7 +273,7 @@
        
        if (userAgentStyleSheet != null) {
            addMatchingRules(userAgentStyleSheet.getCssRules(), e, pe,
  -                             uaRules);
  +                             null, uaRules);
            uaRules = sortRules(uaRules, e, pe);
            for (int i = 0; i < uaRules.getLength(); i++) {
                CSSStyleRule rule = (CSSStyleRule)uaRules.item(i);
  @@ -302,7 +317,7 @@
        CSSOMRuleList uaRules = new CSSOMRuleList();
        
        if (userStyleSheet != null) {
  -         addMatchingRules(userStyleSheet.getCssRules(), e, pe, uaRules);
  +         addMatchingRules(userStyleSheet.getCssRules(), e, pe, null, uaRules);
            uaRules = sortRules(uaRules, e, pe);
            for (int i = 0; i < uaRules.getLength(); i++) {
                CSSStyleRule rule = (CSSStyleRule)uaRules.item(i);
  @@ -340,7 +355,7 @@
        * @param rd The result style declaration.
        */
       protected void addNonCSSPresentationalHints
  -        (Element e, String pe, CSSOMReadOnlyStyleDeclaration rd) {
  +        (Element e, String pe, URL buri, CSSOMReadOnlyStyleDeclaration rd) {
        if ((pe == null || pe.equals("")) &&
            e instanceof ElementNonCSSPresentationalHints) {
            ElementNonCSSPresentationalHints elt;
  @@ -350,7 +365,7 @@
            if (nonCSSDecl != null) {
                int len = nonCSSDecl.getLength();
                for (int i = 0; i < len; i++) {
  -                 setAuthorProperty(nonCSSDecl.item(i), nonCSSDecl, rd);
  +                 setAuthorProperty(nonCSSDecl.item(i), nonCSSDecl, buri, rd);
                }
            }
        }
  @@ -371,19 +386,38 @@
               for (int i = 0; i < l.getLength(); i++) {
                   CSSStyleSheet ss = (CSSStyleSheet)l.item(i);
                   if (!ss.getDisabled() && mediaMatch(ss.getMedia())) {
  +                    Node on = ss.getOwnerNode();
  +                    URL baseURI = null;
  +                    if (on == null) {
  +                        if (e instanceof ElementWithBaseURI) {
  +                            try {
  +                                baseURI =
  +                                    new URL(((ElementWithBaseURI)e).getBaseURI());
  +                            } catch (MalformedURLException ex) {
  +                            }
  +                        }
  +                    } else if (on instanceof ExtendedLinkStyle) {
  +                        try {
  +                            baseURI =
  +                                new URL(((ExtendedLinkStyle)on).getStyleSheetURI());
  +                        } catch (MalformedURLException ex) {
  +                        }
  +                    }
                       addMatchingRules(ss.getCssRules(),
                                        e,
                                        pe,
  +                                     baseURI,
                                        authorRules);
                   }
               }
               authorRules = sortRules(authorRules, e, pe);
               for (int i = 0; i < authorRules.getLength(); i++) {
  -                CSSStyleRule rule = (CSSStyleRule)authorRules.item(i);
  +                CSSOMStyleRule rule = (CSSOMStyleRule)authorRules.item(i);
  +                URL baseURI = rule.getBaseURI();
                   CSSStyleDeclaration decl = rule.getStyle();
                   int len = decl.getLength();
                   for (int j = 0; j < len; j++) {
  -                    setAuthorProperty(decl.item(j), decl, rd);
  +                    setAuthorProperty(decl.item(j), decl, baseURI, rd);
                   }
               }
        } catch (DOMException ex) {
  @@ -397,10 +431,12 @@
        * Adds the inline style properties to the given style declaration.
        * @param e The element to match.
        * @param pe The pseudo-element to match.
  +     * @param buri The base uri, if any.
        * @param rd The result style declaration.
        */
       protected void addInlineStyleProperties(Element e,
                                            String pe,
  +                                            URL buri,
                                            CSSOMReadOnlyStyleDeclaration rd) {
           try {
               if (e instanceof ElementCSSInlineStyle) {
  @@ -414,7 +450,7 @@
                       inlineDecl = ((ElementCSSInlineStyle)e).getStyle();
                       int len = inlineDecl.getLength();
                       for (int i = 0; i < len; i++) {
  -                        setAuthorProperty(inlineDecl.item(i), inlineDecl, rd);
  +                        setAuthorProperty(inlineDecl.item(i), inlineDecl, buri, rd);
                       }
                   }
               }
  @@ -429,17 +465,18 @@
        * Adds the override style properties to the given style declaration.
        * @param e The element to match.
        * @param pe The pseudo-element to match.
  +     * @param buri The base uri, if any.
        * @param rd The result style declaration.
        */
       protected void addOverrideStyleProperties
  -        (Element e, String pe, CSSOMReadOnlyStyleDeclaration rd) {
  +        (Element e, String pe, URL buri, CSSOMReadOnlyStyleDeclaration rd) {
        CSSStyleDeclaration overrideDecl;
        overrideDecl = ((DocumentCSS)document).getOverrideStyle(e, pe);
        if ((pe == null || pe.equals("")) &&
            overrideDecl != null) {
            int len = overrideDecl.getLength();
            for (int i = 0; i < len; i++) {
  -             setAuthorProperty(overrideDecl.item(i), overrideDecl, rd);
  +             setAuthorProperty(overrideDecl.item(i), overrideDecl, buri, rd);
            }
        }
       }
  @@ -448,10 +485,12 @@
        * Sets a author value to a computed style declaration.
        * @param name The property name.
        * @param decl The style declaration.
  +     * @param buri The base uri, if any.
        * @param dest The result style declaration.
        */
       protected void setAuthorProperty(String name,
                                        CSSStyleDeclaration decl,
  +                                     URL buri,
                                        CSSOMReadOnlyStyleDeclaration dest) {
        CSSOMValue         val   = (CSSOMValue)decl.getPropertyCSSValue(name);
        String             prio  = decl.getPropertyPriority(name);
  @@ -464,21 +503,30 @@
           if (dval == null ||
               dorg != CSSOMReadOnlyStyleDeclaration.USER_ORIGIN ||
               dprio.length() == 0) {
  -            /*
  -            if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
  -                if (value.getPrimitiveType() == CSSPrimitiveValue.CSS_URI) {
  +            resolveURI(value, buri);
  +            dest.setPropertyCSSValue(name,
  +                                     value,
  +                                     prio,
  +                                     CSSOMReadOnlyStyleDeclaration.AUTHOR_ORIGIN);
  +        }
  +    }
  +
  +    /**
  +     * If 'value' is an CSS_URI, resolves the value, relative to the given
  +     * URI.
  +     */
  +    protected void resolveURI(CSSOMReadOnlyValue value, URL buri) {
  +        if (buri != null &&
  +            value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
  +            if (value.getPrimitiveType() == CSSPrimitiveValue.CSS_URI) {
  +                try {
                       value.setImmutableValue
                           (new ImmutableString
                            (CSSPrimitiveValue.CSS_URI,
  -                          new ParsedURL(basePURL, 
  -                                        value.getStringValue()).toString()));
  +                          new URL(buri, value.getStringValue()).toString()));
  +                } catch (MalformedURLException e) {
                   }
               }
  -            */
  -            dest.setPropertyCSSValue(name,
  -                                     value,
  -                                     prio,
  -                                     CSSOMReadOnlyStyleDeclaration.AUTHOR_ORIGIN);
           }
       }
       
  @@ -488,11 +536,13 @@
        * @param l The input rule list.
        * @param e The element to match.
        * @param pe The pseudo-element to match.
  +     * @param buri The base uri, if any.
        * @param rl The result rule list.
        */
       protected void addMatchingRules(CSSRuleList l,
                                    Element e,
                                    String pe,
  +                                    URL buri,
                                    CSSOMRuleList rl) {
        int llen = l.getLength();
        for (int i = 0; i < llen; i++) {
  @@ -505,21 +555,35 @@
                for (int j = 0; j < slen; j++) {
                    ExtendedSelector s = (ExtendedSelector)sl.item(j);
                    if (s.match(e, pe)) {
  +                        sr.setBaseURI(buri);
                        rl.append(rule);
                    }
                }
                break;
  +
            case CSSRule.IMPORT_RULE:
                CSSImportRule ir = (CSSImportRule)rule;
  -             CSSStyleSheet   is = ir.getStyleSheet();
  -             if (is != null) {
  -                 addMatchingRules(is.getCssRules(), e, pe, rl);
  -             }
  +                if (mediaMatch(ir.getMedia())) {
  +                    try {
  +                        if (buri == null) {
  +                            buri = new URL(ir.getHref());
  +                        } else {
  +                            buri = new URL(buri, ir.getHref());
  +                        }
  +                    } catch (MalformedURLException ex) {
  +                        break;
  +                    }
  +                    CSSStyleSheet is = ir.getStyleSheet();
  +                    if (is != null) {
  +                        addMatchingRules(is.getCssRules(), e, pe, buri, rl);
  +                    }
  +                }
                break;
  +
            case CSSRule.MEDIA_RULE:
                CSSMediaRule mr = (CSSMediaRule)rule;
                if (mediaMatch(mr.getMedia())) {
  -                 addMatchingRules(mr.getCssRules(), e, pe, rl);
  +                 addMatchingRules(mr.getCssRules(), e, pe, buri, rl);
                }
                break;
            }
  
  
  
  1.3       +22 -1     xml-batik/sources/org/apache/batik/css/CSSOMStyleRule.java
  
  Index: CSSOMStyleRule.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/css/CSSOMStyleRule.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CSSOMStyleRule.java       2001/04/10 17:27:09     1.2
  +++ CSSOMStyleRule.java       2001/10/18 12:30:22     1.3
  @@ -9,6 +9,8 @@
   package org.apache.batik.css;
   
   import java.io.StringReader;
  +import java.net.URL;
  +
   import org.apache.batik.css.value.ValueFactory;
   import org.apache.batik.css.event.CSSStyleDeclarationChangeEvent;
   import org.apache.batik.css.event.CSSStyleDeclarationChangeListener;
  @@ -32,7 +34,7 @@
    * This class implements the {@link org.w3c.dom.css.CSSStyleRule} interface.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: CSSOMStyleRule.java,v 1.2 2001/04/10 17:27:09 hillion Exp $
  + * @version $Id: CSSOMStyleRule.java,v 1.3 2001/10/18 12:30:22 hillion Exp $
    */
   public class CSSOMStyleRule
       extends    AbstractCSSRule
  @@ -67,6 +69,11 @@
        * The Style rule change support.
        */
       protected CSSStyleRuleChangeSupport styleRuleChangeSupport;
  +
  +    /**
  +     * The base URI.
  +     */
  +    protected URL baseURI;
       
       /**
        * Creates a new rule set.
  @@ -81,6 +88,20 @@
        style = new CSSOMStyleDeclaration(this, p);
        style.setValueFactoryMap(m);
        style.addCSSStyleDeclarationChangeListener(this);
  +    }
  +
  +    /**
  +     * Sets the base URI.
  +     */
  +    public void setBaseURI(URL url) {
  +        baseURI = url;
  +    }
  +
  +    /**
  +     * Returns the base URI.
  +     */
  +    public URL getBaseURI() {
  +        return baseURI;
       }
   
       /**
  
  
  
  1.4       +5 -5      xml-batik/sources/org/apache/batik/css/HiddenChildElement.java
  
  Index: HiddenChildElement.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/css/HiddenChildElement.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- HiddenChildElement.java   2001/10/17 14:47:26     1.3
  +++ HiddenChildElement.java   2001/10/18 12:30:22     1.4
  @@ -15,7 +15,7 @@
    * of another element without being added to the DOM tree.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: HiddenChildElement.java,v 1.3 2001/10/17 14:47:26 hillion Exp $
  + * @version $Id: HiddenChildElement.java,v 1.4 2001/10/18 12:30:22 hillion Exp $
    */
   public interface HiddenChildElement {
       /**
  @@ -29,12 +29,12 @@
       void setParentElement(Element elt);
   
       /**
  -     * Sets the cascaded style of this element.
  +     * Gets the style of this element.
        */
  -    CSSOMReadOnlyStyleDeclaration getCascadedStyle();
  +    CSSOMReadOnlyStyleDeclaration getStyleDeclaration();
   
       /**
  -     * Sets the cascaded style of this element.
  +     * Sets the style of this element.
        */
  -    void setCascadedStyle(CSSOMReadOnlyStyleDeclaration sd);
  +    void setStyleDeclaration(CSSOMReadOnlyStyleDeclaration sd);
   }
  
  
  
  1.3       +2 -2      
xml-batik/sources/org/apache/batik/css/HiddenChildElementSupport.java
  
  Index: HiddenChildElementSupport.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/css/HiddenChildElementSupport.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- HiddenChildElementSupport.java    2001/10/17 14:47:26     1.2
  +++ HiddenChildElementSupport.java    2001/10/18 12:30:22     1.3
  @@ -15,7 +15,7 @@
    * This class provides utility methods for HiddenChildElement support.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: HiddenChildElementSupport.java,v 1.2 2001/10/17 14:47:26 hillion 
Exp $
  + * @version $Id: HiddenChildElementSupport.java,v 1.3 2001/10/18 12:30:22 hillion 
Exp $
    */
   public class HiddenChildElementSupport {
       /**
  @@ -53,7 +53,7 @@
                                   AbstractViewCSS srcv) {
           CSSOMReadOnlyStyleDeclaration sd;
           sd = (CSSOMReadOnlyStyleDeclaration)srcv.computeStyle(src, null);
  -        ((HiddenChildElement)e).setCascadedStyle(sd);
  +        ((HiddenChildElement)e).setStyleDeclaration(sd);
           sd.setContext(ev, e);
           
           for (Node en = e.getFirstChild(), sn = src.getFirstChild();
  
  
  
  1.1                  xml-batik/sources/org/apache/batik/css/ExtendedLinkStyle.java
  
  Index: ExtendedLinkStyle.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Apache Software Foundation. All rights reserved.        *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Apache Software License *
   * version 1.1, a copy of which has been included with this distribution in  *
   * the LICENSE file.                                                         *
   *****************************************************************************/
  
  package org.apache.batik.css;
  
  import org.w3c.dom.stylesheets.LinkStyle;
  
  /**
   * This interface is an extension of the standard LinkStyle interface.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
   * @version $Id: ExtendedLinkStyle.java,v 1.1 2001/10/18 12:30:22 hillion Exp $
   */
  public interface ExtendedLinkStyle extends LinkStyle {
      
      /**
       * Returns the URI of the referenced stylesheet.
       */
      String getStyleSheetURI();
  }
  
  
  
  1.5       +2 -2      
xml-batik/sources/org/apache/batik/dom/StyleSheetProcessingInstruction.java
  
  Index: StyleSheetProcessingInstruction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/dom/StyleSheetProcessingInstruction.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- StyleSheetProcessingInstruction.java      2001/10/11 18:37:33     1.4
  +++ StyleSheetProcessingInstruction.java      2001/10/18 12:30:23     1.5
  @@ -21,7 +21,7 @@
    * instructions.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: StyleSheetProcessingInstruction.java,v 1.4 2001/10/11 18:37:33 
hillion Exp $
  + * @version $Id: StyleSheetProcessingInstruction.java,v 1.5 2001/10/18 12:30:23 
hillion Exp $
    */
   public class StyleSheetProcessingInstruction
       extends AbstractProcessingInstruction
  @@ -130,6 +130,6 @@
        * Returns a new uninitialized instance of this object's class.
        */
       protected Node newNode() {
  -        return new GenericAttr();
  +        return new StyleSheetProcessingInstruction();
       }
   }
  
  
  
  1.6       +9 -14     xml-batik/sources/org/apache/batik/dom/svg/AbstractElement.java
  
  Index: AbstractElement.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/AbstractElement.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AbstractElement.java      2001/10/17 14:47:26     1.5
  +++ AbstractElement.java      2001/10/18 12:30:23     1.6
  @@ -35,7 +35,7 @@
    * an element interoperable with the SVG elements.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: AbstractElement.java,v 1.5 2001/10/17 14:47:26 hillion Exp $
  + * @version $Id: AbstractElement.java,v 1.6 2001/10/18 12:30:23 hillion Exp $
    */
   public abstract class AbstractElement
       extends org.apache.batik.dom.AbstractElement
  @@ -57,7 +57,7 @@
       /**
        * The cascaded style, if any.
        */
  -    protected transient CSSOMReadOnlyStyleDeclaration cascadedStyle;
  +    protected transient CSSOMReadOnlyStyleDeclaration styleDeclaration;
   
       /**
        * Creates a new Element object.
  @@ -82,12 +82,7 @@
        * Returns this element's base URI.
        */
       public String getBaseURI() {
  -        try {
  -            return new java.net.URL(((SVGOMDocument)ownerDocument).getURLObject(),
  -                                    XMLBaseSupport.getXMLBase(this)).toString();
  -        } catch (java.net.MalformedURLException e) {
  -            throw new RuntimeException(e.getMessage());
  -        }
  +        return XMLBaseSupport.getCascadedXMLBase(this);
       }
   
       // ElementWithID /////////////////////////////////////////////////
  @@ -147,17 +142,17 @@
       }
   
       /**
  -     * Sets the cascaded style of this element.
  +     * Gets the style of this element.
        */
  -    public CSSOMReadOnlyStyleDeclaration getCascadedStyle() {
  -        return cascadedStyle;
  +    public CSSOMReadOnlyStyleDeclaration getStyleDeclaration() {
  +        return styleDeclaration;
       }
   
       /**
  -     * Sets the cascaded style of this element.
  +     * Sets the style of this element.
        */
  -    public void setCascadedStyle(CSSOMReadOnlyStyleDeclaration sd) {
  -        cascadedStyle = sd;
  +    public void setStyleDeclaration(CSSOMReadOnlyStyleDeclaration sd) {
  +        styleDeclaration = sd;
       }
   
       /**
  
  
  
  1.41      +6 -7      xml-batik/sources/org/apache/batik/dom/svg/SVGOMDocument.java
  
  Index: SVGOMDocument.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGOMDocument.java,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- SVGOMDocument.java        2001/10/11 18:37:33     1.40
  +++ SVGOMDocument.java        2001/10/18 12:30:23     1.41
  @@ -29,7 +29,6 @@
   import org.apache.batik.dom.GenericEntityReference;
   import org.apache.batik.dom.GenericProcessingInstruction;
   import org.apache.batik.dom.GenericText;
  -import org.apache.batik.dom.StyleSheetProcessingInstruction;
   import org.apache.batik.dom.StyleSheetFactory;
   
   import org.apache.batik.dom.util.OverrideStyleElement;
  @@ -69,7 +68,7 @@
    * This class implements {@link SVGDocument}.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: SVGOMDocument.java,v 1.40 2001/10/11 18:37:33 hillion Exp $
  + * @version $Id: SVGOMDocument.java,v 1.41 2001/10/18 12:30:23 hillion Exp $
    */
   public class SVGOMDocument
       extends    AbstractDocument
  @@ -292,14 +291,14 @@
       /**
        * <b>DOM</b>: Implements {@link
        * Document#createProcessingInstruction(String,String)}.
  -     * @return a StyleSheetProcessingInstruction if target is
  +     * @return a SVGStyleSheetProcessingInstruction if target is
        *         "xml-stylesheet" or a GenericProcessingInstruction otherwise.
        */
       public ProcessingInstruction createProcessingInstruction(String target,
                                                                String data)
           throws DOMException {
           if ("xml-stylesheet".equals(target)) {
  -            return new StyleSheetProcessingInstruction
  +            return new SVGStyleSheetProcessingInstruction
                   (data, this, (StyleSheetFactory)getImplementation());
           }
           return new GenericProcessingInstruction(target, data, this);
  @@ -433,9 +432,9 @@
           for (int i = 0; i < styleSheets.getLength(); i++) {
               StyleSheet ss = (StyleSheet)styleSheets.item(i);
               Node on = ss.getOwnerNode();
  -            if (on instanceof StyleSheetProcessingInstruction) {
  -                StyleSheetProcessingInstruction sspi;
  -                sspi = (StyleSheetProcessingInstruction)on;
  +            if (on instanceof SVGStyleSheetProcessingInstruction) {
  +                SVGStyleSheetProcessingInstruction sspi;
  +                sspi = (SVGStyleSheetProcessingInstruction)on;
                   if ("yes".equals(sspi.getPseudoAttributes().get("alternate"))) {
                       ss.setDisabled(!title.equals(ss.getTitle()));
                   }
  
  
  
  1.2       +10 -3     xml-batik/sources/org/apache/batik/dom/svg/XMLBaseSupport.java
  
  Index: XMLBaseSupport.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/XMLBaseSupport.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XMLBaseSupport.java       2001/10/12 07:33:09     1.1
  +++ XMLBaseSupport.java       2001/10/18 12:30:23     1.2
  @@ -23,7 +23,7 @@
    * This class provides support for the xml:base attribute.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Thomas DeWeese</a>
  - * @version $Id: XMLBaseSupport.java,v 1.1 2001/10/12 07:33:09 hillion Exp $
  + * @version $Id: XMLBaseSupport.java,v 1.2 2001/10/18 12:30:23 hillion Exp $
    */
   public class XMLBaseSupport implements XMLConstants {
       
  @@ -34,10 +34,17 @@
       }
   
       /**
  +     * Returns the xml:base attribute value of the given element.
  +     */
  +    public static String getXMLBase(Element elt) {
  +        return elt.getAttributeNS(XML_NAMESPACE_URI, "base");
  +    }
  +
  +    /**
        * Returns the xml:base attribute value of the given element
        * Resolving any dependency on parent bases if needed.
        */
  -    public static String getXMLBase(Element elt) {
  +    public static String getCascadedXMLBase(Element elt) {
           String base = null;
           Node n = elt;
           while (true) {
  @@ -51,7 +58,7 @@
               // new Exception("N: " + n).printStackTrace();
               if (n== null) break;
               if (n.getNodeType() == Node.ELEMENT_NODE) {
  -                base = getXMLBase((Element)n);
  +                base = getCascadedXMLBase((Element)n);
                   break;
               }
           }
  
  
  
  1.1                  
xml-batik/sources/org/apache/batik/dom/svg/SVGStyleSheetProcessingInstruction.java
  
  Index: SVGStyleSheetProcessingInstruction.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Apache Software Foundation. All rights reserved.        *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Apache Software License *
   * version 1.1, a copy of which has been included with this distribution in  *
   * the LICENSE file.                                                         *
   *****************************************************************************/
  
  package org.apache.batik.dom.svg;
  
  import java.net.MalformedURLException;
  import java.net.URL;
  
  import org.apache.batik.css.ExtendedLinkStyle;
  
  import org.apache.batik.dom.AbstractDocument;
  import org.apache.batik.dom.StyleSheetFactory;
  import org.apache.batik.dom.StyleSheetProcessingInstruction;
  
  import org.w3c.dom.Node;
  
  /**
   * This class provides an implementation of the 'xml-stylesheet' processing
   * instructions.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
   * @version $Id: SVGStyleSheetProcessingInstruction.java,v 1.1 2001/10/18 12:30:23 
hillion Exp $
   */
  public class SVGStyleSheetProcessingInstruction
      extends StyleSheetProcessingInstruction
      implements ExtendedLinkStyle {
      
      /**
       * Creates a new ProcessingInstruction object.
       */
      protected SVGStyleSheetProcessingInstruction() {
      }
  
      /**
       * Creates a new ProcessingInstruction object.
       */
      public SVGStyleSheetProcessingInstruction(String            data,
                                                AbstractDocument  owner,
                                                StyleSheetFactory f) {
          super(data, owner, f);
      }
  
      /**
       * Returns the URI of the referenced stylesheet.
       */
      public String getStyleSheetURI() {
          SVGOMDocument svgDoc;
          svgDoc = (SVGOMDocument)getOwnerDocument();
          URL url = svgDoc.getURLObject();
          String href = (String)getPseudoAttributes().get("href");
          if (url != null) {
              try {
                  return new URL(url, href).toString();
              } catch (MalformedURLException e) {
              }
          }
          return href;
      }
  
      /**
       * Returns a new uninitialized instance of this object's class.
       */
      protected Node newNode() {
          return new SVGStyleSheetProcessingInstruction();
      }
  }
  
  
  

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

Reply via email to