19f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
29f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one
39f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * or more contributor license agreements. See the NOTICE file
49f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed with this work for additional information
59f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * regarding copyright ownership. The ASF licenses this file
69f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to you under the Apache License, Version 2.0 (the  "License");
79f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * you may not use this file except in compliance with the License.
89f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * You may obtain a copy of the License at
99f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *     http://www.apache.org/licenses/LICENSE-2.0
119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Unless required by applicable law or agreed to in writing, software
139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * See the License for the specific language governing permissions and
169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * limitations under the License.
179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * $Id: Stylesheet.java 468643 2006-10-28 06:56:03Z minchau $
209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpackage org.apache.xalan.templates;
229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.io.IOException;
249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.io.ObjectInputStream;
259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.io.ObjectOutputStream;
269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.util.Hashtable;
279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.util.Stack;
289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.util.Vector;
299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport javax.xml.transform.SourceLocator;
319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport javax.xml.transform.TransformerException;
329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.dtm.DTM;
349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.utils.QName;
359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.utils.StringVector;
369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.utils.SystemIDResolver;
379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/**
399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Represents a stylesheet element.
409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>All properties in this class have a fixed form of bean-style property
419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * accessors for all properties that represent XSL attributes or elements.
429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * These properties have setter method names accessed generically by the
439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * processor, and so these names must be fixed according to the system
449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * defined in the <a href="XSLTAttributeDef#getSetterMethodName">getSetterMethodName</a>
459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * function.</p>
469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p><pre>
479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <!ENTITY % top-level "
489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *  (xsl:import*,
499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   (xsl:include
509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   | xsl:strip-space
519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   | xsl:preserve-space
529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   | xsl:output
539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   | xsl:key
549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   | xsl:decimal-format
559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   | xsl:attribute-set
569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   | xsl:variable
579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   | xsl:param
589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   | xsl:template
599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   | xsl:namespace-alias
609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   %non-xsl-top-level;)*)
619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * ">
629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <!ENTITY % top-level-atts '
649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   extension-element-prefixes CDATA #IMPLIED
659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   exclude-result-prefixes CDATA #IMPLIED
669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   id ID #IMPLIED
679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   version NMTOKEN #REQUIRED
689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   xmlns:xsl CDATA #FIXED "http://www.w3.org/1999/XSL/Transform"
699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *   %space-att;
709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * '>
719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <!ELEMENT xsl:stylesheet %top-level;>
739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <!ATTLIST xsl:stylesheet %top-level-atts;>
749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <!ELEMENT xsl:transform %top-level;>
769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <!ATTLIST xsl:transform %top-level-atts;>
779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * </p></pre>
799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see <a href="http://www.w3.org/TR/xslt#section-Stylesheet-Structure">section-Stylesheet-Structure in XSLT Specification</a>
809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpublic class Stylesheet extends ElemTemplateElement
829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        implements java.io.Serializable /* , Document */
839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{
849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    static final long serialVersionUID = 2085337282743043776L;
859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Constructor for a Stylesheet.
889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param parent  The including or importing stylesheet.
899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public Stylesheet(Stylesheet parent)
919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null != parent)
949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_stylesheetParent = parent;
969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_stylesheetRoot = parent.getStylesheetRoot();
979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the owning stylesheet.  This looks up the
1029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * inheritance chain until it calls getStylesheet
1039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * on a Stylesheet object, which will return itself.
1049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The owning stylesheet, itself.
1069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public Stylesheet getStylesheet()
1089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return this;
1109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Tell if this can be cast to a StylesheetComposed, meaning, you
1149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * can ask questions from getXXXComposed functions.
1159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return False if this is not a StylesheetComposed
1179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public boolean isAggregatedType()
1199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return false;
1219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Tell if this is the root of the stylesheet tree.
1259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return False is this is not the root of the stylesheet tree.
1279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public boolean isRoot()
1299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return false;
1319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Extension to be used when serializing to disk.
1359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public static final String STYLESHEET_EXT = ".lxc";
1379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Read the stylesheet from a serialization stream.
1409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param stream Input stream to read from
1429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws IOException
1449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws TransformerException
1459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private void readObject(ObjectInputStream stream)
1479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          throws IOException, TransformerException
1489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // System.out.println("Reading Stylesheet");
1519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    try
1529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
1539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      stream.defaultReadObject();
1549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
1559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    catch (ClassNotFoundException cnfe)
1569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
1579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new TransformerException(cnfe);
1589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
1599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // System.out.println("Done reading Stylesheet");
1619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Write out the given output stream
1659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param stream The output stream to write out
1689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws IOException
1709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private void writeObject(ObjectOutputStream stream) throws IOException
1729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // System.out.println("Writing Stylesheet");
1759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    stream.defaultWriteObject();
1769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // System.out.println("Done writing Stylesheet");
1789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  //============== XSLT Properties =================
1819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "xmlns:xsl" property.
1849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
1859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private String m_XmlnsXsl;
1879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the "xmlns:xsl" property.
1909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#xslt-namespace">xslt-namespace in XSLT Specification</a>
1919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v The value to be set for the "xmlns:xsl" property.
1939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setXmlnsXsl(String v)
1959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_XmlnsXsl = v;
1979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the "xmlns:xsl" property.
2019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#xslt-namespace">xslt-namespace in XSLT Specification</a>
2029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The value of the "xmlns:xsl" property.
2049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public String getXmlnsXsl()
2069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return m_XmlnsXsl;
2089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "extension-element-prefixes" property, actually contains URIs.
2129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
2139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private StringVector m_ExtensionElementURIs;
2159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the "extension-element-prefixes" property.
2189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#extension-element">extension-element in XSLT Specification</a>
2199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v The value to be set for the "extension-element-prefixes"
2219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * property: a vector of extension element URIs.
2229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setExtensionElementPrefixes(StringVector v)
2249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_ExtensionElementURIs = v;
2269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get and "extension-element-prefix" property.
2309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#extension-element">extension-element in XSLT Specification</a>
2319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of extension element URI in list
2339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The extension element URI at the given index
2359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws ArrayIndexOutOfBoundsException
2379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public String getExtensionElementPrefix(int i)
2399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          throws ArrayIndexOutOfBoundsException
2409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_ExtensionElementURIs)
2439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
2449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return m_ExtensionElementURIs.elementAt(i);
2469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of "extension-element-prefixes" Strings.
2509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#extension-element">extension-element in XSLT Specification</a>
2519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return Number of URIs in the list
2539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getExtensionElementPrefixCount()
2559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_ExtensionElementURIs)
2579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           ? m_ExtensionElementURIs.size() : 0;
2589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Find out if this contains a given "extension-element-prefix" property.
2629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#extension-element">extension-element in XSLT Specification</a>
2639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param uri URI of extension element to look for
2659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return True if the given URI was found in the list
2679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public boolean containsExtensionElementURI(String uri)
2699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_ExtensionElementURIs)
2729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return false;
2739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return m_ExtensionElementURIs.contains(uri);
2759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "exclude-result-prefixes" property.
2799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
2809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private StringVector m_ExcludeResultPrefixs;
2829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the "exclude-result-prefixes" property.
2859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The designation of a namespace as an excluded namespace is
2869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * effective within the subtree of the stylesheet rooted at
2879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * the element bearing the exclude-result-prefixes or
2889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * xsl:exclude-result-prefixes attribute; a subtree rooted
2899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * at an xsl:stylesheet element does not include any stylesheets
2909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * imported or included by children of that xsl:stylesheet element.
2919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#literal-result-element">literal-result-element in XSLT Specification</a>
2929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v A StringVector of prefixes to exclude
2949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setExcludeResultPrefixes(StringVector v)
2969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_ExcludeResultPrefixs = v;
2989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "exclude-result-prefix" property.
3029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The designation of a namespace as an excluded namespace is
3039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * effective within the subtree of the stylesheet rooted at
3049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * the element bearing the exclude-result-prefixes or
3059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * xsl:exclude-result-prefixes attribute; a subtree rooted
3069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * at an xsl:stylesheet element does not include any stylesheets
3079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * imported or included by children of that xsl:stylesheet element.
3089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#literal-result-element">literal-result-element in XSLT Specification</a>
3099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of prefix to get in list
3119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return Prefix to be excluded at the given index
3139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws ArrayIndexOutOfBoundsException
3159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public String getExcludeResultPrefix(int i)
3179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          throws ArrayIndexOutOfBoundsException
3189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_ExcludeResultPrefixs)
3219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
3229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return m_ExcludeResultPrefixs.elementAt(i);
3249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of "exclude-result-prefixes" Strings.
3289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#literal-result-element">literal-result-element in XSLT Specification</a>
3299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The number of prefix strings to be excluded.
3319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getExcludeResultPrefixCount()
3339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_ExcludeResultPrefixs)
3359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           ? m_ExcludeResultPrefixs.size() : 0;
3369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get whether or not the passed prefix is contained flagged by
3409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * the "exclude-result-prefixes" property.
3419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#literal-result-element">literal-result-element in XSLT Specification</a>
3429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param prefix non-null reference to prefix that might be excluded.
3449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param uri reference to namespace that prefix maps to
3459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return true if the prefix should normally be excluded.>
3479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public boolean containsExcludeResultPrefix(String prefix, String uri)
3499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_ExcludeResultPrefixs || uri == null )
3529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return false;
3539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // This loop is ok here because this code only runs during
3559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // stylesheet compile time.
3569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    for (int i =0; i< m_ExcludeResultPrefixs.size(); i++)
3579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
3589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      if (uri.equals(getNamespaceForPrefix(m_ExcludeResultPrefixs.elementAt(i))))
3599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return true;
3609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
3619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return false;
3639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /*  if (prefix.length() == 0)
3659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      prefix = Constants.ATTRVAL_DEFAULT_PREFIX;
3669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return m_ExcludeResultPrefixs.contains(prefix); */
3689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "id" property.
3729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
3739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private String m_Id;
3759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the "id" property.
3789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#section-Embedding-Stylesheets">section-Embedding-Stylesheets in XSLT Specification</a>
3799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v Value for the "id" property.
3819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setId(String v)
3839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_Id = v;
3859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the "id" property.
3899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#section-Embedding-Stylesheets">section-Embedding-Stylesheets in XSLT Specification</a>
3909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The value of the "id" property.
3929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public String getId()
3949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return m_Id;
3969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "version" property.
4009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
4019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private String m_Version;
4039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Whether or not the stylesheet is in "Forward Compatibility Mode"
4069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
4079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private boolean m_isCompatibleMode = false;
4099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the "version" property.
4129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#forwards">forwards in XSLT Specification</a>
4139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v Value for the "version" property.
4159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setVersion(String v)
4179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_Version = v;
4199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_isCompatibleMode = (Double.valueOf(v).doubleValue() > Constants.XSLTVERSUPPORTED);
4209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get whether or not the stylesheet is in "Forward Compatibility Mode"
4249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return true if in forward compatible mode, false otherwise
4269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public boolean getCompatibleMode()
4289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  	return m_isCompatibleMode;
4309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the "version" property.
4349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#forwards">forwards in XSLT Specification</a>
4359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The value of the "version" property.
4379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public String getVersion()
4399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return m_Version;
4419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "xsl:import" list.
4459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
4469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private Vector m_imports;
4489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Add a stylesheet to the "import" list.
4519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#import">import in XSLT Specification</a>
4529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v Stylesheet to add to the import list
4549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setImport(StylesheetComposed v)
4569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_imports)
4599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_imports = new Vector();
4609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // I'm going to insert the elements in backwards order,
4629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // so I can walk them 0 to n.
4639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_imports.addElement(v);
4649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get a stylesheet from the "import" list.
4689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#import">import in XSLT Specification</a>
4699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of the stylesheet to get
4719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The stylesheet at the given index
4739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws ArrayIndexOutOfBoundsException
4759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public StylesheetComposed getImport(int i)
4779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          throws ArrayIndexOutOfBoundsException
4789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_imports)
4819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
4829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (StylesheetComposed) m_imports.elementAt(i);
4849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of imported stylesheets.
4889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#import">import in XSLT Specification</a>
4899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the number of imported stylesheets.
4919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getImportCount()
4939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_imports) ? m_imports.size() : 0;
4959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "xsl:include" properties.
4999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
5009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private Vector m_includes;
5029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
5049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Add a stylesheet to the "include" list.
5059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#include">include in XSLT Specification</a>
5069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v Stylesheet to add to the "include" list
5089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setInclude(Stylesheet v)
5109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_includes)
5139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_includes = new Vector();
5149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_includes.addElement(v);
5169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
5179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
5199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the stylesheet at the given in index in "include" list
5209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#include">include in XSLT Specification</a>
5219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of stylesheet to get
5239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return Stylesheet at the given index
5259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws ArrayIndexOutOfBoundsException
5279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public Stylesheet getInclude(int i) throws ArrayIndexOutOfBoundsException
5299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_includes)
5329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
5339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (Stylesheet) m_includes.elementAt(i);
5359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
5369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
5389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of included stylesheets.
5399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#import">import in XSLT Specification</a>
5409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the number of included stylesheets.
5429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getIncludeCount()
5449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_includes) ? m_includes.size() : 0;
5469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
5479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
5499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Table of tables of element decimal-format.
5509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see DecimalFormatProperties
5519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
5529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  Stack m_DecimalFormatDeclarations;
5549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
5569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Process the xsl:decimal-format element.
5579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param edf Decimal-format element to push into stack
5599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setDecimalFormat(DecimalFormatProperties edf)
5619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_DecimalFormatDeclarations)
5649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_DecimalFormatDeclarations = new Stack();
5659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Elements are pushed in by order of importance
5679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // so that when recomposed, they get overiden properly.
5689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_DecimalFormatDeclarations.push(edf);
5699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
5709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
5729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "xsl:decimal-format" property.
5739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see DecimalFormatProperties
5759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#format-number">format-number in XSLT Specification</a>
5769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param name The qualified name of the decimal format property.
5789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return null if not found, otherwise a DecimalFormatProperties
5799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * object, from which you can get a DecimalFormatSymbols object.
5809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public DecimalFormatProperties getDecimalFormat(QName name)
5829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_DecimalFormatDeclarations)
5859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return null;
5869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    int n = getDecimalFormatCount();
5889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    for (int i = (n - 1); i >= 0; i++)
5909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
5919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      DecimalFormatProperties dfp = getDecimalFormat(i);
5929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      if (dfp.getName().equals(name))
5949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return dfp;
5959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
5969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return null;
5989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
5999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "xsl:decimal-format" property.
6029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#format-number">format-number in XSLT Specification</a>
6039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see DecimalFormatProperties
6049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of decimal-format property in stack
6069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The decimal-format property at the given index
6089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws ArrayIndexOutOfBoundsException
6109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
6119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public DecimalFormatProperties getDecimalFormat(int i)
6129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          throws ArrayIndexOutOfBoundsException
6139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
6149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_DecimalFormatDeclarations)
6169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
6179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (DecimalFormatProperties) m_DecimalFormatDeclarations.elementAt(i);
6199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
6209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of xsl:decimal-format declarations.
6239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see DecimalFormatProperties
6249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the number of xsl:decimal-format declarations.
6269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
6279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getDecimalFormatCount()
6289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
6299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_DecimalFormatDeclarations)
6309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           ? m_DecimalFormatDeclarations.size() : 0;
6319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
6329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "xsl:strip-space" properties,
6359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * A lookup table of all space stripping elements.
6369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
6379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
6389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private Vector m_whitespaceStrippingElements;
6399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the "xsl:strip-space" properties.
6429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#strip">strip in XSLT Specification</a>
6439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param wsi WhiteSpaceInfo element to add to list
6459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
6469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setStripSpaces(WhiteSpaceInfo wsi)
6479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
6489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_whitespaceStrippingElements)
6509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
6519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_whitespaceStrippingElements = new Vector();
6529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
6539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_whitespaceStrippingElements.addElement(wsi);
6559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
6569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "xsl:strip-space" property.
6599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#strip">strip in XSLT Specification</a>
6609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of WhiteSpaceInfo to get
6629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return WhiteSpaceInfo at given index
6649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws ArrayIndexOutOfBoundsException
6669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
6679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public WhiteSpaceInfo getStripSpace(int i) throws ArrayIndexOutOfBoundsException
6689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
6699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_whitespaceStrippingElements)
6719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
6729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (WhiteSpaceInfo) m_whitespaceStrippingElements.elementAt(i);
6749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
6759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of "xsl:strip-space" properties.
6789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#strip">strip in XSLT Specification</a>
6799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the number of "xsl:strip-space" properties.
6819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
6829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getStripSpaceCount()
6839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
6849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_whitespaceStrippingElements)
6859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           ? m_whitespaceStrippingElements.size() : 0;
6869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
6879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "xsl:preserve-space" property,
6909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * A lookup table of all space preserving elements.
6919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
6929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
6939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private Vector m_whitespacePreservingElements;
6949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the "xsl:preserve-space" property.
6979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#strip">strip in XSLT Specification</a>
6989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param wsi WhiteSpaceInfo element to add to list
7009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
7019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setPreserveSpaces(WhiteSpaceInfo wsi)
7029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
7039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_whitespacePreservingElements)
7059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
7069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_whitespacePreservingElements = new Vector();
7079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
7089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_whitespacePreservingElements.addElement(wsi);
7109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
7119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
7139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get a "xsl:preserve-space" property.
7149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#strip">strip in XSLT Specification</a>
7159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of WhiteSpaceInfo to get
7179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return WhiteSpaceInfo at the given index
7199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws ArrayIndexOutOfBoundsException
7219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
7229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public WhiteSpaceInfo getPreserveSpace(int i) throws ArrayIndexOutOfBoundsException
7239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
7249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_whitespacePreservingElements)
7269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
7279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (WhiteSpaceInfo) m_whitespacePreservingElements.elementAt(i);
7299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
7309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
7329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of "xsl:preserve-space" properties.
7339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#strip">strip in XSLT Specification</a>
7349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the number of "xsl:preserve-space" properties.
7369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
7379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getPreserveSpaceCount()
7389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
7399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_whitespacePreservingElements)
7409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           ? m_whitespacePreservingElements.size() : 0;
7419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
7429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
7449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "xsl:output" properties.  This is a vector of OutputProperties objects.
7459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
7469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
7479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private Vector m_output;
7489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
7509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the "xsl:output" property.
7519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#output">output in XSLT Specification</a>
7529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v non-null reference to the OutputProperties object to be
7549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *          added to the collection.
7559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
7569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setOutput(OutputProperties v)
7579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
7589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_output)
7599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
7609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_output = new Vector();
7619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
7629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_output.addElement(v);
7649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
7659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
7679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "xsl:output" property.
7689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#output">output in XSLT Specification</a>
7699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of OutputFormatExtended to get
7719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return non-null reference to an OutputProperties object.
7739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws ArrayIndexOutOfBoundsException
7759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
7769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public OutputProperties getOutput(int i) throws ArrayIndexOutOfBoundsException
7779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
7789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_output)
7809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
7819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (OutputProperties) m_output.elementAt(i);
7839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
7849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
7869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of "xsl:output" properties.
7879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#output">output in XSLT Specification</a>
7889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The number of OutputProperties objects contained in this stylesheet.
7909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
7919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getOutputCount()
7929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
7939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_output)
7949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           ? m_output.size() : 0;
7959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
7969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
7989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "xsl:key" property.
7999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
8009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private Vector m_keyDeclarations;
8029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the "xsl:key" property.
8059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#key">key in XSLT Specification</a>
8069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v KeyDeclaration element to add to the list of key declarations
8089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setKey(KeyDeclaration v)
8109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
8119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_keyDeclarations)
8139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_keyDeclarations = new Vector();
8149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_keyDeclarations.addElement(v);
8169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
8179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "xsl:key" property.
8209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#key">key in XSLT Specification</a>
8219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of KeyDeclaration element to get
8239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return KeyDeclaration element at given index in list
8259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws ArrayIndexOutOfBoundsException
8279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public KeyDeclaration getKey(int i) throws ArrayIndexOutOfBoundsException
8299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
8309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_keyDeclarations)
8329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
8339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (KeyDeclaration) m_keyDeclarations.elementAt(i);
8359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
8369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of "xsl:key" properties.
8399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#key">key in XSLT Specification</a>
8409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the number of "xsl:key" properties.
8429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getKeyCount()
8449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
8459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_keyDeclarations) ? m_keyDeclarations.size() : 0;
8469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
8479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "xsl:attribute-set" property.
8509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
8519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private Vector m_attributeSets;
8539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the "xsl:attribute-set" property.
8569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#attribute-sets">attribute-sets in XSLT Specification</a>
8579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param attrSet ElemAttributeSet to add to the list of attribute sets
8599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setAttributeSet(ElemAttributeSet attrSet)
8619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
8629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_attributeSets)
8649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
8659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_attributeSets = new Vector();
8669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
8679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_attributeSets.addElement(attrSet);
8699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
8709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "xsl:attribute-set" property.
8739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#attribute-sets">attribute-sets in XSLT Specification</a>
8749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of ElemAttributeSet to get in list
8769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return ElemAttributeSet at the given index
8789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws ArrayIndexOutOfBoundsException
8809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public ElemAttributeSet getAttributeSet(int i)
8829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          throws ArrayIndexOutOfBoundsException
8839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
8849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_attributeSets)
8869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
8879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (ElemAttributeSet) m_attributeSets.elementAt(i);
8899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
8909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of "xsl:attribute-set" properties.
8939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#attribute-sets">attribute-sets in XSLT Specification</a>
8949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the number of "xsl:attribute-set" properties.
8969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getAttributeSetCount()
8989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
8999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_attributeSets) ? m_attributeSets.size() : 0;
9009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "xsl:variable" and "xsl:param" properties.
9049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
9059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
9069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private Vector m_topLevelVariables;
9079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the "xsl:variable" property.
9109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#top-level-variables">top-level-variables in XSLT Specification</a>
9119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v ElemVariable object to add to list of top level variables
9139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
9149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setVariable(ElemVariable v)
9159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
9169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_topLevelVariables)
9189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_topLevelVariables = new Vector();
9199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_topLevelVariables.addElement(v);
9219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "xsl:variable" or "xsl:param" property.
9259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#top-level-variables">top-level-variables in XSLT Specification</a>
9269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param qname non-null reference to the qualified name of the variable.
9289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The ElemVariable with the given name in the list or null
9309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
9319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public ElemVariable getVariableOrParam(QName qname)
9329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
9339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null != m_topLevelVariables)
9359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
9369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      int n = getVariableOrParamCount();
9379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int i = 0; i < n; i++)
9399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
9409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        ElemVariable var = (ElemVariable) getVariableOrParam(i);
9419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (var.getName().equals(qname))
9439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          return var;
9449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
9459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
9469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return null;
9489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "xsl:variable" property.
9539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#top-level-variables">top-level-variables in XSLT Specification</a>
9549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param qname Qualified name of the xsl:variable to get
9569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return reference to the variable named by qname, or null if not found.
9589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
9599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public ElemVariable getVariable(QName qname)
9609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
9619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null != m_topLevelVariables)
9639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
9649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      int n = getVariableOrParamCount();
9659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int i = 0; i < n; i++)
9679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
9689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        ElemVariable var = getVariableOrParam(i);
9699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if((var.getXSLToken() == Constants.ELEMNAME_VARIABLE) &&
9709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           (var.getName().equals(qname)))
9719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          return var;
9729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
9739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
9749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return null;
9769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "xsl:variable" property.
9809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#top-level-variables">top-level-variables in XSLT Specification</a>
9819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of variable to get in the list
9839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return ElemVariable at the given index in the list
9859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws ArrayIndexOutOfBoundsException
9879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
9889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public ElemVariable getVariableOrParam(int i) throws ArrayIndexOutOfBoundsException
9899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
9909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_topLevelVariables)
9929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
9939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (ElemVariable) m_topLevelVariables.elementAt(i);
9959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of "xsl:variable" properties.
9999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#top-level-variables">top-level-variables in XSLT Specification</a>
10009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the number of "xsl:variable" properties.
10029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getVariableOrParamCount()
10049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_topLevelVariables) ? m_topLevelVariables.size() : 0;
10069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set an "xsl:param" property.
10109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#top-level-variables">top-level-variables in XSLT Specification</a>
10119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v A non-null ElemParam reference.
10139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setParam(ElemParam v)
10159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    setVariable(v);
10179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "xsl:param" property.
10219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#top-level-variables">top-level-variables in XSLT Specification</a>
10229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param qname non-null reference to qualified name of the parameter.
10249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return ElemParam with the given name in the list or null
10269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public ElemParam getParam(QName qname)
10289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null != m_topLevelVariables)
10319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
10329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      int n = getVariableOrParamCount();
10339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int i = 0; i < n; i++)
10359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
10369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        ElemVariable var = getVariableOrParam(i);
10379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if((var.getXSLToken() == Constants.ELEMNAME_PARAMVARIABLE) &&
10389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           (var.getName().equals(qname)))
10399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          return (ElemParam)var;
10409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
10419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
10429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return null;
10449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "xsl:template" properties.
10489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
10499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private Vector m_templates;
10519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set an "xsl:template" property.
10549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#section-Defining-Template-Rules">section-Defining-Template-Rules in XSLT Specification</a>
10559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v ElemTemplate to add to list of templates
10579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setTemplate(ElemTemplate v)
10599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_templates)
10629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_templates = new Vector();
10639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_templates.addElement(v);
10659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    v.setStylesheet(this);
10669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "xsl:template" property.
10709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#section-Defining-Template-Rules">section-Defining-Template-Rules in XSLT Specification</a>
10719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of ElemTemplate in the list to get
10739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return ElemTemplate at the given index in the list
10759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws TransformerException
10779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public ElemTemplate getTemplate(int i) throws TransformerException
10799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_templates)
10829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
10839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (ElemTemplate) m_templates.elementAt(i);
10859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of "xsl:template" properties.
10899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#section-Defining-Template-Rules">section-Defining-Template-Rules in XSLT Specification</a>
10909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the number of "xsl:template" properties.
10929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getTemplateCount()
10949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_templates) ? m_templates.size() : 0;
10969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "xsl:namespace-alias" properties.
11009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
11019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private Vector m_prefix_aliases;
11039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the "xsl:namespace-alias" property.
11069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#literal-result-element">literal-result-element in XSLT Specification</a>
11079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param na NamespaceAlias elemeent to add to the list
11099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setNamespaceAlias(NamespaceAlias na)
11119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (m_prefix_aliases == null)
11149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_prefix_aliases = new Vector();
11159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_prefix_aliases.addElement(na);
11179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
11189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an "xsl:namespace-alias" property.
11219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#literal-result-element">literal-result-element in XSLT Specification</a>
11229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of NamespaceAlias element to get from the list
11249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return NamespaceAlias element at the given index in the list
11269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws ArrayIndexOutOfBoundsException
11289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public NamespaceAlias getNamespaceAlias(int i)
11309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          throws ArrayIndexOutOfBoundsException
11319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_prefix_aliases)
11349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
11359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (NamespaceAlias) m_prefix_aliases.elementAt(i);
11379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
11389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the number of "xsl:namespace-alias" properties.
11419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#top-level-variables">top-level-variables in XSLT Specification</a>
11429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the number of "xsl:namespace-alias" properties.
11449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getNamespaceAliasCount()
11469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_prefix_aliases) ? m_prefix_aliases.size() : 0;
11489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
11499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The "non-xsl-top-level" properties.
11529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
11539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private Hashtable m_NonXslTopLevel;
11559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set found a non-xslt element.
11589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#stylesheet-element">stylesheet-element in XSLT Specification</a>
11599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param name Qualified name of the element
11619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param obj The element object
11629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setNonXslTopLevel(QName name, Object obj)
11649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_NonXslTopLevel)
11679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_NonXslTopLevel = new Hashtable();
11689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_NonXslTopLevel.put(name, obj);
11709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
11719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get a non-xslt element.
11749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see <a href="http://www.w3.org/TR/xslt#stylesheet-element">stylesheet-element in XSLT Specification</a>
11759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param name Qualified name of the element to get
11779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The object associate with the given name
11799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public Object getNonXslTopLevel(QName name)
11819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null != m_NonXslTopLevel) ? m_NonXslTopLevel.get(name) : null;
11839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
11849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  // =========== End top-level XSLT properties ===========
11869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The base URL of the XSL document.
11899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
11909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private String m_href = null;
11929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /** The doctype-public element.
11949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *  @serial          */
11959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private String m_publicId;
11969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /** The doctype-system element.
11989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *  @serial          */
11999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private String m_systemId;
12009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the base identifier with which this stylesheet is associated.
12039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the base identifier with which this stylesheet is associated.
12059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public String getHref()
12079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return m_href;
12099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the base identifier with which this stylesheet is associated.
12139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param baseIdent the base identifier with which this stylesheet is associated.
12159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setHref(String baseIdent)
12179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_href = baseIdent;
12199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the location information for this element.
12239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param locator SourceLocator object with location information
12259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setLocaterInfo(SourceLocator locator)
12279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null != locator)
12309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
12319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_publicId = locator.getPublicId();
12329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      m_systemId = locator.getSystemId();
12339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      if (null != m_systemId)
12359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
12369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        try
12379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        {
12389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          m_href = SystemIDResolver.getAbsoluteURI(m_systemId, null);
12399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
12409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        catch (TransformerException se)
12419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        {
12429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          // Ignore this for right now
12449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
12459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
12469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      super.setLocaterInfo(locator);
12489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
12499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The root of the stylesheet, where all the tables common
12539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * to all stylesheets are kept.
12549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
12559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private StylesheetRoot m_stylesheetRoot;
12579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the root of the stylesheet, where all the tables common
12609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * to all stylesheets are kept.
12619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the root of the stylesheet
12639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public StylesheetRoot getStylesheetRoot()
12659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return m_stylesheetRoot;
12679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the root of the stylesheet, where all the tables common
12719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * to all stylesheets are kept.
12729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v the root of the stylesheet
12749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setStylesheetRoot(StylesheetRoot v)
12769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_stylesheetRoot = v;
12789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * The parent of the stylesheet.  This will be null if this
12829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * is the root stylesheet.
12839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @serial
12849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private Stylesheet m_stylesheetParent;
12869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the parent of the stylesheet.  This will be null if this
12899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * is the root stylesheet.
12909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the parent of the stylesheet.
12929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public Stylesheet getStylesheetParent()
12949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return m_stylesheetParent;
12969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Set the parent of the stylesheet.  This should be null if this
13009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * is the root stylesheet.
13019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v the parent of the stylesheet.
13039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setStylesheetParent(Stylesheet v)
13059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
13069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_stylesheetParent = v;
13079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
13089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
13109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the owning aggregated stylesheet, or this
13119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * stylesheet if it is aggregated.
13129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the owning aggregated stylesheet or itself
13149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public StylesheetComposed getStylesheetComposed()
13169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
13179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    Stylesheet sheet = this;
13199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    while (!sheet.isAggregatedType())
13219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
13229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      sheet = sheet.getStylesheetParent();
13239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
13249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (StylesheetComposed) sheet;
13269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
13279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
13299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the type of the node.  We'll pretend we're a Document.
13309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return the type of the node: document node.
13329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public short getNodeType()
13349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
13359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return DTM.DOCUMENT_NODE;
13369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
13379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
13399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get an integer representation of the element type.
13409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return An integer representation of the element, defined in the
13429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *     Constants class.
13439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.apache.xalan.templates.Constants
13449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getXSLToken()
13469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
13479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return Constants.ELEMNAME_STYLESHEET;
13489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
13499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
13519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Return the node name.
13529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The node name
13549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public String getNodeName()
13569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
13579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return Constants.ELEMNAME_STYLESHEET_STRING;
13589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
13599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
13619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Replace an "xsl:template" property.
13629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * This is a hook for CompilingStylesheetHandler, to allow
13639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * us to access a template, compile it, instantiate it,
13649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * and replace the original with the compiled instance.
13659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * ADDED 9/5/2000 to support compilation experiment
13669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param v Compiled template to replace with
13689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param i Index of template to be replaced
13699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws TransformerException
13719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void replaceTemplate(ElemTemplate v, int i) throws TransformerException
13739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
13749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (null == m_templates)
13769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new ArrayIndexOutOfBoundsException();
13779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    replaceChild(v, (ElemTemplateElement)m_templates.elementAt(i));
13799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_templates.setElementAt(v, i);
13809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    v.setStylesheet(this);
13819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
13829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
13849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Call the children visitors.
13859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param visitor The visitor whose appropriate method will be called.
13869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
13879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    protected void callChildVisitors(XSLTVisitor visitor, boolean callAttrs)
13889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
13899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      int s = getImportCount();
13909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int j = 0; j < s; j++)
13919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
13929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      	getImport(j).callVisitors(visitor);
13939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
13949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      s = getIncludeCount();
13969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int j = 0; j < s; j++)
13979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
13989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      	getInclude(j).callVisitors(visitor);
13999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
14009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      s = getOutputCount();
14029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int j = 0; j < s; j++)
14039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
14049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        visitor.visitTopLevelInstruction(getOutput(j));
14059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
14069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // Next, add in the attribute-set elements
14089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      s = getAttributeSetCount();
14109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int j = 0; j < s; j++)
14119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
14129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      	ElemAttributeSet attrSet = getAttributeSet(j);
14139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (visitor.visitTopLevelInstruction(attrSet))
14149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        {
14159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          attrSet.callChildVisitors(visitor);
14169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
14179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
14189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // Now the decimal-formats
14199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      s = getDecimalFormatCount();
14219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int j = 0; j < s; j++)
14229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
14239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        visitor.visitTopLevelInstruction(getDecimalFormat(j));
14249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
14259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // Now the keys
14279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      s = getKeyCount();
14299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int j = 0; j < s; j++)
14309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
14319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        visitor.visitTopLevelInstruction(getKey(j));
14329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
14339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // And the namespace aliases
14359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      s = getNamespaceAliasCount();
14379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int j = 0; j < s; j++)
14389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
14399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        visitor.visitTopLevelInstruction(getNamespaceAlias(j));
14409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
14419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // Next comes the templates
14439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      s = getTemplateCount();
14459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int j = 0; j < s; j++)
14469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
14479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        try
14489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        {
14499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          ElemTemplate template = getTemplate(j);
14509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          if (visitor.visitTopLevelInstruction(template))
14519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          {
14529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            template.callChildVisitors(visitor);
14539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          }
14549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
14559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        catch (TransformerException te)
14569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        {
14579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          throw new org.apache.xml.utils.WrappedRuntimeException(te);
14589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
14599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
14609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // Then, the variables
14629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      s = getVariableOrParamCount();
14649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int j = 0; j < s; j++)
14659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
14669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      	ElemVariable var = getVariableOrParam(j);
14679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (visitor.visitTopLevelVariableOrParamDecl(var))
14689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        {
14699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          var.callChildVisitors(visitor);
14709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
14719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
14729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // And lastly the whitespace preserving and stripping elements
14749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      s = getStripSpaceCount();
14769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int j = 0; j < s; j++)
14779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
14789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        visitor.visitTopLevelInstruction(getStripSpace(j));
14799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
14809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      s = getPreserveSpaceCount();
14829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      for (int j = 0; j < s; j++)
14839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
14849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        visitor.visitTopLevelInstruction(getPreserveSpace(j));
14859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
14869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      if(null != m_NonXslTopLevel)
14889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
14899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      	java.util.Enumeration elements = m_NonXslTopLevel.elements();
14909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      	while(elements.hasMoreElements())
14919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      	{
14929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      	  ElemTemplateElement elem = (ElemTemplateElement)elements.nextElement();
14939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          if (visitor.visitTopLevelInstruction(elem))
14949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          {
14959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            elem.callChildVisitors(visitor);
14969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          }
14979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      	}
14999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
15009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
15019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
15029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
15039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
15049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Accept a visitor and call the appropriate method
15059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * for this class.
15069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
15079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param visitor The visitor whose appropriate method will be called.
15089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return true if the children of the object should be visited.
15099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
15109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  protected boolean accept(XSLTVisitor visitor)
15119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
15129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  	return visitor.visitStylesheet(this);
15139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
15149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
15159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
15169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson}
1517