summaryrefslogtreecommitdiffstats
path: root/libjava/gnu/xml/transform
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2005-07-16 01:27:14 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2005-07-16 01:27:14 +0000
commita63c2657c94913d72b3cd388730d61edcb09fc69 (patch)
tree8762d1f992e2f725a6bde1ff966ed6f1e5f4f823 /libjava/gnu/xml/transform
parent6484dceb0094998183c2f8d3c8c27c6f4e53b8a9 (diff)
downloadppe42-gcc-a63c2657c94913d72b3cd388730d61edcb09fc69.tar.gz
ppe42-gcc-a63c2657c94913d72b3cd388730d61edcb09fc69.zip
Major merge with Classpath.
Removed many duplicate files. * HACKING: Updated.x * classpath: Imported new directory. * standard.omit: New file. * Makefile.in, aclocal.m4, configure: Rebuilt. * sources.am: New file. * configure.ac: Run Classpath configure script. Moved code around to support. Disable xlib AWT peers (temporarily). * Makefile.am (SUBDIRS): Added 'classpath' (JAVAC): Removed. (AM_CPPFLAGS): Added more -I options. (BOOTCLASSPATH): Simplified. Completely redid how sources are built. Include sources.am. * include/Makefile.am (tool_include__HEADERS): Removed jni.h. * include/jni.h: Removed (in Classpath). * scripts/classes.pl: Updated to look at built classes. * scripts/makemake.tcl: New file. * testsuite/libjava.jni/jni.exp (gcj_jni_compile_c_to_so): Added -I options. (gcj_jni_invocation_compile_c_to_binary): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102082 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/xml/transform')
-rw-r--r--libjava/gnu/xml/transform/AbstractNumberNode.java321
-rw-r--r--libjava/gnu/xml/transform/ApplyImportsNode.java85
-rw-r--r--libjava/gnu/xml/transform/ApplyTemplatesNode.java193
-rw-r--r--libjava/gnu/xml/transform/AttributeNode.java246
-rw-r--r--libjava/gnu/xml/transform/AttributeSet.java67
-rw-r--r--libjava/gnu/xml/transform/Bindings.java242
-rw-r--r--libjava/gnu/xml/transform/CallTemplateNode.java130
-rw-r--r--libjava/gnu/xml/transform/ChooseNode.java93
-rw-r--r--libjava/gnu/xml/transform/CommentNode.java115
-rw-r--r--libjava/gnu/xml/transform/CopyNode.java179
-rw-r--r--libjava/gnu/xml/transform/CopyOfNode.java179
-rw-r--r--libjava/gnu/xml/transform/CurrentFunction.java98
-rw-r--r--libjava/gnu/xml/transform/DOMSourceLocator.java84
-rw-r--r--libjava/gnu/xml/transform/DocumentFunction.java243
-rw-r--r--libjava/gnu/xml/transform/ElementAvailableFunction.java169
-rw-r--r--libjava/gnu/xml/transform/ElementNode.java279
-rw-r--r--libjava/gnu/xml/transform/ErrorListenerErrorHandler.java101
-rw-r--r--libjava/gnu/xml/transform/ForEachNode.java149
-rw-r--r--libjava/gnu/xml/transform/FormatNumberFunction.java132
-rw-r--r--libjava/gnu/xml/transform/FunctionAvailableFunction.java175
-rw-r--r--libjava/gnu/xml/transform/GenerateIdFunction.java126
-rw-r--r--libjava/gnu/xml/transform/IfNode.java107
-rw-r--r--libjava/gnu/xml/transform/Key.java71
-rw-r--r--libjava/gnu/xml/transform/KeyFunction.java216
-rw-r--r--libjava/gnu/xml/transform/LiteralNode.java225
-rw-r--r--libjava/gnu/xml/transform/MessageNode.java97
-rw-r--r--libjava/gnu/xml/transform/NodeNumberNode.java258
-rw-r--r--libjava/gnu/xml/transform/NumberNode.java85
-rw-r--r--libjava/gnu/xml/transform/OtherwiseNode.java93
-rw-r--r--libjava/gnu/xml/transform/ParameterNode.java156
-rw-r--r--libjava/gnu/xml/transform/ProcessingInstructionNode.java123
-rw-r--r--libjava/gnu/xml/transform/SAXSerializer.java305
-rw-r--r--libjava/gnu/xml/transform/SortKey.java154
-rw-r--r--libjava/gnu/xml/transform/StreamSerializer.java632
-rw-r--r--libjava/gnu/xml/transform/Stylesheet.java1728
-rw-r--r--libjava/gnu/xml/transform/SystemPropertyFunction.java128
-rw-r--r--libjava/gnu/xml/transform/Template.java252
-rw-r--r--libjava/gnu/xml/transform/TemplateNode.java115
-rw-r--r--libjava/gnu/xml/transform/TemplatesImpl.java80
-rw-r--r--libjava/gnu/xml/transform/TextNode.java116
-rw-r--r--libjava/gnu/xml/transform/TransformerFactoryImpl.java345
-rw-r--r--libjava/gnu/xml/transform/TransformerImpl.java580
-rw-r--r--libjava/gnu/xml/transform/TransformerOutputProperties.java185
-rw-r--r--libjava/gnu/xml/transform/URIResolverEntityResolver.java83
-rw-r--r--libjava/gnu/xml/transform/UnparsedEntityUriFunction.java118
-rw-r--r--libjava/gnu/xml/transform/ValueOfNode.java126
-rw-r--r--libjava/gnu/xml/transform/WhenNode.java110
-rw-r--r--libjava/gnu/xml/transform/WithParam.java110
-rw-r--r--libjava/gnu/xml/transform/XSLComparator.java124
-rw-r--r--libjava/gnu/xml/transform/XSLURIResolver.java269
50 files changed, 0 insertions, 10397 deletions
diff --git a/libjava/gnu/xml/transform/AbstractNumberNode.java b/libjava/gnu/xml/transform/AbstractNumberNode.java
deleted file mode 100644
index 01c2dbb83d8..00000000000
--- a/libjava/gnu/xml/transform/AbstractNumberNode.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/* AbstractNumberNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing the XSL <code>number</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-abstract class AbstractNumberNode
- extends TemplateNode
-{
-
- static final int ALPHABETIC = 0;
- static final int TRADITIONAL = 1;
-
- final TemplateNode format;
- final String lang;
- final int letterValue;
- final String groupingSeparator;
- final int groupingSize;
-
- AbstractNumberNode(TemplateNode children, TemplateNode next,
- TemplateNode format, String lang,
- int letterValue, String groupingSeparator,
- int groupingSize)
- {
- super(children, next);
- this.format = format;
- this.lang = lang;
- this.letterValue = letterValue;
- this.groupingSeparator = groupingSeparator;
- this.groupingSize = groupingSize;
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- Document doc = (parent instanceof Document) ? (Document) parent :
- parent.getOwnerDocument();
- DocumentFragment fragment = doc.createDocumentFragment();
- format.apply(stylesheet, mode, context, pos, len, fragment, null);
- String f = Expr._string(context, Collections.singleton(fragment));
- String value = format(f, compute(stylesheet, context, pos, len));
- Text text = doc.createTextNode(value);
- if (nextSibling != null)
- {
- parent.insertBefore(text, nextSibling);
- }
- else
- {
- parent.appendChild(text);
- }
- // xsl:number doesn't process children
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- String format(String format, int[] number)
- {
- if (number.length == 0)
- {
- return "";
- }
- int start = 0, end = 0, len = format.length(); // region of format
- // Tokenize
- List tokens = new ArrayList((number.length * 2) + 1);
- List types = new ArrayList(tokens.size());
- while (end < len)
- {
- while (end < len && !isAlphanumeric(format.charAt(end)))
- {
- end++;
- }
- if (end > start)
- {
- tokens.add(format.substring(start, end));
- types.add(Boolean.FALSE);
- }
- start = end;
- while (end < len && isAlphanumeric(format.charAt(end)))
- {
- end++;
- }
- if (end > start)
- {
- tokens.add(format.substring(start, end));
- types.add(Boolean.TRUE);
- }
- start = end;
- }
- // Process tokens
- StringBuffer buf = new StringBuffer();
- len = tokens.size();
- int pos = 0;
- for (int i = 0; i < len; i++)
- {
- String token = (i < 0) ? "." : (String) tokens.get(i);
- boolean alpha = (i < 0) ? true :
- ((Boolean) types.get(i)).booleanValue();
- if (!alpha)
- {
- buf.append(token);
- }
- else
- {
- if (pos < number.length)
- {
- format(buf, number[pos++], token);
- if (((i + 1 == len) || (i + 2 == len)) &&
- (pos < number.length))
- {
- // More numbers than tokens, reuse last token
- i -= 2;
- }
- }
- if (pos == number.length && i < (len - 2))
- {
- // No more numbers. Skip to the end...
- i = len - 2;
- if (((Boolean) types.get(i + 1)).booleanValue())
- {
- // number formatting token, ignore
- i++;
- }
- }
- }
- }
- //System.err.println("format: '"+format+"' "+asList(number)+" = '"+buf.toString()+"'");
- return buf.toString();
- }
-
- /*List asList(int[] number)
- {
- List l = new ArrayList();
- for (int i = 0; i < number.length; i++)
- l.add(new Integer(number[i]));
- return l;
- }*/
-
- void format(StringBuffer buf, int number, String formatToken)
- {
- int len = formatToken.length();
- char c = formatToken.charAt(len - 1);
- if (Character.digit(c, 10) == 1)
- {
- // Check preceding characters
- for (int i = len - 2; i >= 0; i--)
- {
- if (formatToken.charAt(i) != (c - 1))
- {
- format(buf, number, "1");
- return;
- }
- }
- // Decimal representation
- String val = Integer.toString(number);
- for (int d = len - val.length(); d > 0; d--)
- {
- buf.append('0');
- }
- buf.append(val);
- }
- else if ("A".equals(formatToken))
- {
- buf.append(alphabetic('@', number));
- }
- else if ("a".equals(formatToken))
- {
- buf.append(alphabetic('`', number));
- }
- else if ("i".equals(formatToken))
- {
- buf.append(roman(false, number));
- }
- else if ("I".equals(formatToken))
- {
- buf.append(roman(true, number));
- }
- else
- {
- // Unknown numbering sequence
- format(buf, number, "1");
- }
- }
-
- static final boolean isAlphanumeric(char c)
- {
- switch (Character.getType(c))
- {
- case Character.DECIMAL_DIGIT_NUMBER: // Nd
- case Character.LETTER_NUMBER: // Nl
- case Character.OTHER_NUMBER: // No
- case Character.UPPERCASE_LETTER: // Lu
- case Character.LOWERCASE_LETTER: // Ll
- case Character.TITLECASE_LETTER: // Lt
- case Character.MODIFIER_LETTER: // Lm
- case Character.OTHER_LETTER: // Lo
- return true;
- default:
- return false;
- }
- }
-
- static final String alphabetic(char offset, int number)
- {
- StringBuffer buf = new StringBuffer();
- while (number > 0)
- {
- int r = number % 26;
- number = number / 26;
- buf.insert(0, (char) (offset + r));
- }
- return buf.toString();
- }
-
- static final int[] roman_numbers = {1, 5, 10, 50, 100, 500, 1000};
- static final char[] roman_chars = {'i', 'v', 'x', 'l', 'c', 'd', 'm'};
-
- static final String roman(boolean upper, int number)
- {
- StringBuffer buf = new StringBuffer();
- for (int pos = roman_numbers.length - 1; pos >= 0; pos -= 2)
- {
- int f = number / roman_numbers[pos];
- if (f != 0)
- {
- number = number % (f * roman_numbers[pos]);
- }
- if (f > 4 && f < 9)
- {
- buf.append(roman_chars[pos + 1]);
- f -= 5;
- }
- if (f == 4)
- {
- buf.append(roman_chars[pos]);
- buf.append(roman_chars[pos + 1]);
- }
- else if (f == 9)
- {
- buf.append(roman_chars[pos]);
- buf.append(roman_chars[pos + 2]);
- }
- else
- {
- for (; f > 0; f--)
- {
- buf.append(roman_chars[pos]);
- }
- }
- }
- return upper ? buf.toString().toUpperCase() : buf.toString();
- }
-
- abstract int[] compute(Stylesheet stylesheet, Node context, int pos, int len)
- throws TransformerException;
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append("format=");
- buf.append(format);
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/ApplyImportsNode.java b/libjava/gnu/xml/transform/ApplyImportsNode.java
deleted file mode 100644
index 4d171b7acf6..00000000000
--- a/libjava/gnu/xml/transform/ApplyImportsNode.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/* ApplyImportsNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Node;
-
-/**
- * A template node representing an XSLT <code>apply-imports</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class ApplyImportsNode
- extends TemplateNode
-{
-
- ApplyImportsNode(TemplateNode children, TemplateNode next)
- {
- super(children, next);
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new ApplyImportsNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet));
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- TemplateNode t = stylesheet.getTemplate(mode, context, true);
- if (t != null)
- {
- t.apply(stylesheet, mode, context, pos, len,
- parent, nextSibling);
- }
- if (next != null)
- {
- next.apply(stylesheet, mode, context, pos, len,
- parent, nextSibling);
- }
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/ApplyTemplatesNode.java b/libjava/gnu/xml/transform/ApplyTemplatesNode.java
deleted file mode 100644
index bf267212013..00000000000
--- a/libjava/gnu/xml/transform/ApplyTemplatesNode.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/* ApplyTemplatesNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing the XSL <code>apply-templates</code>
- * instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class ApplyTemplatesNode
- extends TemplateNode
-{
-
- final Expr select;
- final QName mode;
- final List sortKeys;
- final List withParams;
- final boolean isDefault;
-
- ApplyTemplatesNode(TemplateNode children, TemplateNode next,
- Expr select, QName mode,
- List sortKeys, List withParams, boolean isDefault)
- {
- super(children, next);
- this.select = select;
- this.mode = mode;
- this.sortKeys = sortKeys;
- this.withParams = withParams;
- this.isDefault = isDefault;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- int len = sortKeys.size();
- List sortKeys2 = new ArrayList(len);
- for (int i = 0; i < len; i++)
- {
- sortKeys2.add(((Key) sortKeys.get(i)).clone(stylesheet));
- }
- len = withParams.size();
- List withParams2 = new ArrayList(len);
- for (int i = 0; i < len; i++)
- {
- withParams2.add(((WithParam) withParams.get(i)).clone(stylesheet));
- }
- return new ApplyTemplatesNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- select.clone(stylesheet),
- mode, sortKeys2, withParams2, isDefault);
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- Object ret = select.evaluate(context, pos, len);
- if (ret != null && ret instanceof Collection)
- {
- if (withParams != null)
- {
- // push the parameter context
- stylesheet.bindings.push(false);
- // set the parameters
- for (Iterator i = withParams.iterator(); i.hasNext(); )
- {
- WithParam p = (WithParam) i.next();
- Object value = p.getValue(stylesheet, mode, context, pos, len);
- stylesheet.bindings.set(p.name, value, false);
- }
- }
- Collection ns = (Collection) ret;
- List nodes = new ArrayList(ns);
- if (sortKeys != null)
- {
- for (Iterator i = sortKeys.iterator(); i.hasNext(); )
- {
- SortKey sortKey = (SortKey) i.next();
- sortKey.init(stylesheet, mode, context, pos, len, parent,
- nextSibling);
- }
- Collections.sort(nodes, new XSLComparator(sortKeys));
- }
- else
- {
- Collections.sort(nodes, documentOrderComparator);
- }
- int l = nodes.size();
- QName effectiveMode = isDefault ? mode : this.mode;
- for (int i = 0; i < l; i++)
- {
- Node node = (Node) nodes.get(i);
- TemplateNode t = stylesheet.getTemplate(effectiveMode, node,
- false);
- if (t != null)
- {
- if (stylesheet.debug)
- {
- System.err.println("Applying " + t);
- }
- stylesheet.current = node;
- t.apply(stylesheet, effectiveMode, node, i + 1, l,
- parent, nextSibling);
- }
- }
- if (withParams != null)
- {
- // pop the variable context
- stylesheet.bindings.pop(false);
- }
- }
- // apply-templates doesn't have processable children
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- boolean o = false;
- if (select != null)
- {
- buf.append("select=");
- buf.append(select);
- o = true;
- }
- if (mode != null)
- {
- if (o)
- {
- buf.append(',');
- }
- buf.append("mode=");
- buf.append(mode);
- }
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/AttributeNode.java b/libjava/gnu/xml/transform/AttributeNode.java
deleted file mode 100644
index c26a7f6f52b..00000000000
--- a/libjava/gnu/xml/transform/AttributeNode.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/* AttributeNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.XMLConstants;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Attr;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing an XSL <code>attribute</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class AttributeNode
- extends TemplateNode
-{
-
- final TemplateNode name;
- final TemplateNode namespace;
- final Node source;
-
- AttributeNode(TemplateNode children, TemplateNode next, TemplateNode name,
- TemplateNode namespace, Node source)
- {
- super(children, next);
- this.name = name;
- this.namespace = namespace;
- this.source = source;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new AttributeNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null : next.clone(stylesheet),
- name.clone(stylesheet),
- (namespace == null) ? null :
- namespace.clone(stylesheet),
- source);
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- Document doc = (parent instanceof Document) ? (Document) parent :
- parent.getOwnerDocument();
- // Create a document fragment to hold the name
- DocumentFragment fragment = doc.createDocumentFragment();
- // Apply name to the fragment
- name.apply(stylesheet, mode,
- context, pos, len,
- fragment, null);
- // Use XPath string-value of fragment
- String nameValue = Expr.stringValue(fragment);
-
- String namespaceValue = null;
- if (namespace != null)
- {
- // Create a document fragment to hold the namespace
- fragment = doc.createDocumentFragment();
- // Apply namespace to the fragment
- namespace.apply(stylesheet, mode,
- context, pos, len,
- fragment, null);
- // Use XPath string-value of fragment
- namespaceValue = Expr.stringValue(fragment);
- if (namespaceValue.length() == 0)
- {
- namespaceValue = null;
- }
- }
-
- String prefix = getPrefix(nameValue);
- if (namespaceValue == null)
- {
- if (prefix != null)
- {
- if (XMLConstants.XML_NS_PREFIX.equals(prefix))
- {
- namespaceValue = XMLConstants.XML_NS_URI;
- }
- else
- {
- // Resolve namespace for this prefix
- namespaceValue = source.lookupNamespaceURI(prefix);
- }
- }
- }
- else
- {
- if (prefix != null)
- {
- String ns2 = source.lookupNamespaceURI(prefix);
- if (ns2 != null && !ns2.equals(namespaceValue))
- {
- // prefix clashes, reset it
- prefix = null;
- int ci = nameValue.indexOf(':');
- nameValue = nameValue.substring(ci + 1);
- }
- }
- }
- if (prefix == null)
- {
- // Resolve prefix for this namespace
- prefix = source.lookupPrefix(namespaceValue);
- if (prefix != null)
- {
- nameValue = prefix + ":" + nameValue;
- }
- else
- {
- if (namespaceValue != null)
- {
- // Must invent a prefix
- prefix = inventPrefix(parent);
- nameValue = prefix + ":" + nameValue;
- }
- }
- }
- NamedNodeMap attrs = parent.getAttributes();
- boolean insert = true;
- if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceValue) ||
- XMLConstants.XMLNS_ATTRIBUTE.equals(nameValue) ||
- nameValue.startsWith("xmlns:"))
- {
- // Namespace declaration, do not output
- insert = false;
- }
- if (prefix != null && namespaceValue == null)
- {
- // Not a QName
- insert = false;
- }
- if (parent.getNodeType() == Node.ELEMENT_NODE &&
- parent.getFirstChild() != null)
- {
- // XSLT 7.1.3 Adding an attribute to an element after children have
- // been added to it is an error
- insert = false;
- }
- if (insert)
- {
- // Insert attribute
- Attr attr = (namespaceValue != null) ?
- doc.createAttributeNS(namespaceValue, nameValue) :
- doc.createAttribute(nameValue);
- if (attrs != null)
- {
- if (namespace != null)
- {
- attrs.setNamedItemNS(attr);
- }
- else
- {
- attrs.setNamedItem(attr);
- }
- }
- if (children != null)
- {
- children.apply(stylesheet, mode,
- context, pos, len,
- attr, null);
- }
- }
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- final String getPrefix(String name)
- {
- int ci = name.indexOf(':');
- return (ci == -1) ? null : name.substring(0, ci);
- }
-
- final String inventPrefix(Node parent)
- {
- String base = "ns";
- int count = 0;
- String ret = base + Integer.toString(count);
- while (parent.lookupNamespaceURI(ret) != null)
- {
- count++;
- ret = base + Integer.toString(count);
- }
- return ret;
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append("name=");
- buf.append(name);
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/AttributeSet.java b/libjava/gnu/xml/transform/AttributeSet.java
deleted file mode 100644
index 3ece9c83f5e..00000000000
--- a/libjava/gnu/xml/transform/AttributeSet.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/* AttributeSet.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-/**
- * An attribute-set entry in a stylesheet.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class AttributeSet
-{
-
- final TemplateNode children;
- final String name;
- final String uas;
-
- AttributeSet(TemplateNode children, String name, String uas)
- {
- this.children = children;
- this.name = name;
- this.uas = uas;
- }
-
- AttributeSet clone(Stylesheet stylesheet)
- {
- return new AttributeSet((children == null) ? null :
- children.clone(stylesheet),
- name, uas);
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/Bindings.java b/libjava/gnu/xml/transform/Bindings.java
deleted file mode 100644
index 7bea4e8231d..00000000000
--- a/libjava/gnu/xml/transform/Bindings.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/* Bindings.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Map;
-import javax.xml.namespace.QName;
-import javax.xml.xpath.XPathVariableResolver;
-import org.w3c.dom.Node;
-
-/**
- * The set of variable bindings in effect for a stylesheet.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-public class Bindings
- implements XPathVariableResolver, Cloneable
-{
-
- final Stylesheet stylesheet;
-
- /**
- * Global variables.
- */
- final LinkedList variables;
-
- /**
- * Parameter value stack.
- */
- final LinkedList parameters;
-
- Bindings(Stylesheet stylesheet)
- {
- this.stylesheet = stylesheet;
- variables = new LinkedList();
- parameters = new LinkedList();
- push(true);
- push(false);
- }
-
- public Object clone()
- {
- try
- {
- return (Bindings) super.clone();
- }
- catch (CloneNotSupportedException e)
- {
- throw new Error(e.getMessage());
- }
- }
-
- void push(boolean global)
- {
- if (global)
- {
- variables.addFirst(new HashMap());
- }
- else
- {
- parameters.addFirst(new HashMap());
- }
- }
-
- void pop(boolean global)
- {
- if (global)
- {
- variables.removeFirst();
- }
- else
- {
- parameters.removeFirst();
- }
- }
-
- public boolean containsKey(String name, boolean global)
- {
- Iterator i = global ? variables.iterator() : parameters.iterator();
- while (i.hasNext())
- {
- Map ctx = (Map) i.next();
- if (ctx.containsKey(name))
- {
- return true;
- }
- }
- return false;
- }
-
- public Object get(String name, Node context, int pos, int len)
- {
- //System.err.println("bindings.get: "+name);
- //System.err.println("\t"+toString());
- Object ret = null;
- for (Iterator i = variables.iterator(); i.hasNext() && ret == null; )
- {
- Map vctx = (Map) i.next();
- ret = vctx.get(name);
- }
- if (ret == null)
- {
- for (Iterator i = parameters.iterator(); i.hasNext() && ret == null; )
- {
- Map pctx = (Map) i.next();
- ret = pctx.get(name);
- }
- }
- /*if (ret instanceof Expr && context != null)
- {
- Expr expr = (Expr) ret;
- ret = expr.evaluate(context, 1, 1);
- }*/
- if (ret instanceof Node)
- {
- ret = Collections.singleton(ret);
- }
- if (ret == null)
- {
- ret = "";
- }
- //System.err.println("\tret="+ret);
- return ret;
- }
-
- void set(String name, Object value, boolean global)
- {
- if (global)
- {
- Map context = (Map) variables.getFirst();
- context.put(name, value);
- }
- else
- {
- Map context = (Map) parameters.getFirst();
- context.put(name, value);
- }
- }
-
- public Object resolveVariable(QName qName)
- {
- return get(qName.toString(), null, 1, 1);
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer();
- boolean next = false;
- Collection seen = new HashSet();
- buf.append('{');
- for (Iterator i = variables.iterator(); i.hasNext(); )
- {
- Map ctx = (Map) i.next();
- for (Iterator j = ctx.entrySet().iterator(); j.hasNext(); )
- {
- if (next)
- {
- buf.append(',');
- }
- else
- {
- next = true;
- }
- Map.Entry entry = (Map.Entry) j.next();
- Object key = entry.getKey();
- if (!seen.contains(key))
- {
- buf.append(key);
- buf.append('=');
- buf.append(entry.getValue());
- seen.add(key);
- }
- }
- }
- for (Iterator i = parameters.iterator(); i.hasNext(); )
- {
- Map ctx = (Map) i.next();
- for (Iterator j = ctx.entrySet().iterator(); j.hasNext(); )
- {
- if (next)
- {
- buf.append(',');
- }
- else
- {
- next = true;
- }
- Map.Entry entry = (Map.Entry) j.next();
- Object key = entry.getKey();
- if (!seen.contains(key))
- {
- buf.append(key);
- buf.append('=');
- buf.append(entry.getValue());
- seen.add(key);
- }
- }
- }
- buf.append('}');
- return buf.toString();
- }
-}
diff --git a/libjava/gnu/xml/transform/CallTemplateNode.java b/libjava/gnu/xml/transform/CallTemplateNode.java
deleted file mode 100644
index bb494084f7c..00000000000
--- a/libjava/gnu/xml/transform/CallTemplateNode.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/* CallTemplateNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Node;
-
-/**
- * A template node representing the XSL <code>call-template</code>
- * instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class CallTemplateNode
- extends TemplateNode
-{
-
- final QName name;
- final List withParams;
-
- CallTemplateNode(TemplateNode children, TemplateNode next,
- QName name, List withParams)
- {
- super(children, next);
- this.name = name;
- this.withParams = withParams;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- int len = withParams.size();
- List withParams2 = new ArrayList(len);
- for (int i = 0; i < len; i++)
- {
- withParams2.add(((WithParam) withParams.get(i)).clone(stylesheet));
- }
- return new CallTemplateNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- name, withParams2);
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- if (withParams != null)
- {
- // push the parameter context
- stylesheet.bindings.push(false);
- // set the parameters
- for (Iterator i = withParams.iterator(); i.hasNext(); )
- {
- WithParam p = (WithParam) i.next();
- Object value = p.getValue(stylesheet, mode, context, pos, len);
- stylesheet.bindings.set(p.name, value, false);
- }
- }
- TemplateNode t = stylesheet.getTemplate(mode, name);
- if (t != null)
- {
- t.apply(stylesheet, mode, context, pos, len,
- parent, nextSibling);
- }
- if (withParams != null)
- {
- // pop the variable context
- stylesheet.bindings.pop(false);
- }
- // call-template doesn't have processable children
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append("name=");
- buf.append(name);
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/ChooseNode.java b/libjava/gnu/xml/transform/ChooseNode.java
deleted file mode 100644
index 4a34712e43c..00000000000
--- a/libjava/gnu/xml/transform/ChooseNode.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/* ChooseNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Node;
-
-/**
- * A template node representing an XSL <code>choose</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class ChooseNode
- extends TemplateNode
-{
-
- ChooseNode(TemplateNode children, TemplateNode next)
- {
- super(children, next);
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new ChooseNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet));
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- if (children != null)
- {
- children.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/CommentNode.java b/libjava/gnu/xml/transform/CommentNode.java
deleted file mode 100644
index 969555e8419..00000000000
--- a/libjava/gnu/xml/transform/CommentNode.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/* CommentNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Comment;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing the XSL <code>comment</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class CommentNode
- extends TemplateNode
-{
-
- CommentNode(TemplateNode children, TemplateNode next)
- {
- super(children, next);
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new CommentNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet));
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- String value = "";
- Document doc = (parent instanceof Document) ? (Document) parent :
- parent.getOwnerDocument();
- if (children != null)
- {
- // Create a document fragment to hold the text
- DocumentFragment fragment = doc.createDocumentFragment();
- // Apply children to the fragment
- children.apply(stylesheet, mode,
- context, pos, len,
- fragment, null);
- // Use XPath string-value of fragment
- value = Expr.stringValue(fragment);
- }
- Comment comment = doc.createComment(value);
- // Insert into result tree
- if (nextSibling != null)
- {
- parent.insertBefore(comment, nextSibling);
- }
- else
- {
- parent.appendChild(comment);
- }
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/CopyNode.java b/libjava/gnu/xml/transform/CopyNode.java
deleted file mode 100644
index b2c81b725ec..00000000000
--- a/libjava/gnu/xml/transform/CopyNode.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/* CopyNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.Iterator;
-import java.util.StringTokenizer;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-
-/**
- * A template node representing the XSL <code>copy</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class CopyNode
- extends TemplateNode
-{
-
- final String uas;
-
- CopyNode(TemplateNode children, TemplateNode next, String uas)
- {
- super(children, next);
- this.uas = uas;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new CopyNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- uas);
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- Node copy = parent;
- switch (context.getNodeType())
- {
- case Node.TEXT_NODE:
- case Node.ATTRIBUTE_NODE:
- case Node.ELEMENT_NODE:
- case Node.PROCESSING_INSTRUCTION_NODE:
- case Node.COMMENT_NODE:
- Document doc = (parent instanceof Document) ? (Document) parent :
- parent.getOwnerDocument();
- copy = context.cloneNode(false);
- copy = doc.adoptNode(copy);
- if (copy.getNodeType() == Node.ATTRIBUTE_NODE)
- {
- if (parent.getFirstChild() != null)
- {
- // Ignore attempt to add attribute after children
- }
- else
- {
- NamedNodeMap attrs = parent.getAttributes();
- if (attrs != null)
- {
- attrs.setNamedItemNS(copy);
- }
- }
- }
- else
- {
- if (nextSibling != null)
- {
- parent.insertBefore(copy, nextSibling);
- }
- else
- {
- parent.appendChild(copy);
- }
- }
- }
- if (uas != null)
- {
- StringTokenizer st = new StringTokenizer(uas, " ");
- while (st.hasMoreTokens())
- {
- addAttributeSet(stylesheet, mode, context, pos, len,
- copy, null, st.nextToken());
- }
- }
- if (children != null)
- {
- children.apply(stylesheet, mode,
- context, pos, len,
- copy, null);
- }
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- void addAttributeSet(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling, String attributeSet)
- throws TransformerException
- {
- for (Iterator i = stylesheet.attributeSets.iterator(); i.hasNext(); )
- {
- AttributeSet as = (AttributeSet) i.next();
- if (!as.name.equals(attributeSet))
- {
- continue;
- }
- if (as.uas != null)
- {
- StringTokenizer st = new StringTokenizer(as.uas, " ");
- while (st.hasMoreTokens())
- {
- addAttributeSet(stylesheet, mode, context, pos, len,
- parent, nextSibling, st.nextToken());
- }
- }
- if (as.children != null)
- {
- as.children.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/CopyOfNode.java b/libjava/gnu/xml/transform/CopyOfNode.java
deleted file mode 100644
index 4e09eeffb63..00000000000
--- a/libjava/gnu/xml/transform/CopyOfNode.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/* CopyOfNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing an XSLT <code>copy-of</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class CopyOfNode
- extends TemplateNode
-{
-
- final Expr select;
-
- CopyOfNode(TemplateNode children, TemplateNode next, Expr select)
- {
- super(children, next);
- this.select = select;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new CopyOfNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- select.clone(stylesheet));
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- Object ret = select.evaluate(context, pos, len);
- Document doc = (parent instanceof Document) ? (Document) parent :
- parent.getOwnerDocument();
- if (ret instanceof Collection)
- {
- Collection ns = (Collection) ret;
- List list = new ArrayList(ns);
- Collections.sort(list, documentOrderComparator);
- for (Iterator i = list.iterator(); i.hasNext(); )
- {
- Node src = (Node) i.next();
- short nodeType = src.getNodeType();
- if (nodeType == Node.DOCUMENT_NODE)
- {
- // Use document element
- src = ((Document) src).getDocumentElement();
- if (src == null)
- {
- continue;
- }
- nodeType = Node.ELEMENT_NODE;
- }
- else if (nodeType == Node.ATTRIBUTE_NODE)
- {
- if (parent.getFirstChild() != null)
- {
- // Ignore attempt to add attribute after children
- continue;
- }
- }
- if (parent.getNodeType() == Node.ATTRIBUTE_NODE &&
- nodeType != Node.TEXT_NODE &&
- nodeType != Node.ENTITY_REFERENCE_NODE)
- {
- // Ignore
- continue;
- }
- Node node = src.cloneNode(true);
- node = doc.adoptNode(node);
- if (nodeType == Node.ATTRIBUTE_NODE)
- {
- NamedNodeMap attrs = parent.getAttributes();
- if (attrs != null)
- {
- attrs.setNamedItemNS(node);
- }
- }
- else
- {
- if (nextSibling != null)
- {
- parent.insertBefore(node, nextSibling);
- }
- else
- {
- parent.appendChild(node);
- }
- }
- }
- }
- else
- {
- String value = Expr._string(context, ret);
- if (value != null && value.length() > 0)
- {
- Text textNode = doc.createTextNode(value);
- if (nextSibling != null)
- {
- parent.insertBefore(textNode, nextSibling);
- }
- else
- {
- parent.appendChild(textNode);
- }
- }
- }
- // copy-of doesn't process children
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append("select=");
- buf.append(select);
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/CurrentFunction.java b/libjava/gnu/xml/transform/CurrentFunction.java
deleted file mode 100644
index 845793ac795..00000000000
--- a/libjava/gnu/xml/transform/CurrentFunction.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/* CurrentFunction.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.Collections;
-import java.util.List;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.Function;
-
-/**
- * The XSLT <code>current()</code>function.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class CurrentFunction
- extends Expr
- implements Function, XPathFunction
-{
-
- final Stylesheet stylesheet;
-
- CurrentFunction(Stylesheet stylesheet)
- {
- this.stylesheet = stylesheet;
- }
-
- public Object evaluate(List args)
- throws XPathFunctionException
- {
- // We can't do anything useful here.
- // So much for the JAXP API...
- return Collections.EMPTY_SET;
- }
-
- public void setArguments(List args)
- {
- }
-
- public Object evaluate(Node context, int pos, int len)
- {
- return Collections.singleton(stylesheet.current);
- }
-
- public Expr clone(Object context)
- {
- Stylesheet s = stylesheet;
- if (context instanceof Stylesheet)
- {
- s = (Stylesheet) context;
- }
- return new CurrentFunction(s);
- }
-
- public String toString()
- {
- return "current()";
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/DOMSourceLocator.java b/libjava/gnu/xml/transform/DOMSourceLocator.java
deleted file mode 100644
index 9bc8fb1b6c8..00000000000
--- a/libjava/gnu/xml/transform/DOMSourceLocator.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/* DOMSourceLocator.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.transform.dom.DOMLocator;
-import org.w3c.dom.Node;
-
-/**
- * Simple DOMLocator implementation.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class DOMSourceLocator
- implements DOMLocator
-{
-
- final Node node;
-
- DOMSourceLocator(Node node)
- {
- this.node = node;
- }
-
- public Node getOriginatingNode()
- {
- return node;
- }
-
- public String getPublicId()
- {
- return null;
- }
-
- public String getSystemId()
- {
- return null;
- }
-
- public int getLineNumber()
- {
- return -1;
- }
-
- public int getColumnNumber()
- {
- return -1;
- }
-
-}
diff --git a/libjava/gnu/xml/transform/DocumentFunction.java b/libjava/gnu/xml/transform/DocumentFunction.java
deleted file mode 100644
index 22dac75db12..00000000000
--- a/libjava/gnu/xml/transform/DocumentFunction.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/* DocumentFunction.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.TreeSet;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Constant;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.Function;
-import gnu.xml.xpath.IdFunction;
-
-/**
- * The XSLT <code>document()</code>function.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class DocumentFunction
- extends Expr
- implements Function, XPathFunction
-{
-
- final Stylesheet stylesheet;
- final Node base;
- List args;
- List values;
-
- DocumentFunction(Stylesheet stylesheet, Node base)
- {
- this.stylesheet = stylesheet;
- this.base = base;
- }
-
- public Object evaluate(List args)
- throws XPathFunctionException
- {
- values = args;
- return evaluate(null, 1, 1);
- }
-
- public void setArguments(List args)
- {
- this.args = args;
- }
-
- public Object evaluate(Node context, int pos, int len)
- {
- int arity = args.size();
- if (values == null)
- {
- values = new ArrayList(arity);
- for (int i = 0; i < arity; i++)
- {
- Expr arg = (Expr) args.get(i);
- values.add(arg.evaluate(context, pos, len));
- }
- }
- Object ret;
- switch (arity)
- {
- case 1:
- Object arg = values.get(0);
- if (arg instanceof Collection)
- {
- Collection ns = (Collection) arg;
- Collection acc = new TreeSet();
- for (Iterator i = ns.iterator(); i.hasNext(); )
- {
- Node node = (Node) i.next();
- String s = Expr.stringValue(node);
- acc.addAll(document(s, node.getBaseURI()));
- }
- ret = acc;
- }
- else
- {
- String s = Expr._string(context, arg);
- ret = document(s, base.getBaseURI());
- }
- break;
- case 2:
- Object arg1 = values.get(0);
- Object arg2 = values.get(1);
- if (!(arg2 instanceof Collection))
- {
- throw new RuntimeException("second argument is not a node-set");
- }
- Collection arg2ns = (Collection) arg2;
- String base2 = arg2ns.isEmpty() ? null :
- ((Node) arg2ns.iterator().next()).getBaseURI();
- if (arg1 instanceof Collection)
- {
- Collection arg1ns = (Collection) arg1;
- Collection acc = new TreeSet();
- for (Iterator i = arg1ns.iterator(); i.hasNext(); )
- {
- Node node = (Node) i.next();
- String s = Expr.stringValue(node);
- acc.addAll(document(s, base2));
- }
- ret = acc;
- }
- else
- {
- String s = Expr._string(context, arg1);
- ret = document(s, base2);
- }
- break;
- default:
- throw new RuntimeException("invalid arity");
- }
- values = null;
- return ret;
- }
-
- /**
- * The XSL <code>document</code> function.
- * @see XSLT 12.1
- * @param uri the URI from which to retrieve nodes
- * @param base the base URI for relative URIs
- */
- Collection document(String uri, String base)
- {
- if ("".equals(uri) || uri == null)
- {
- uri = this.base.getBaseURI();
- }
-
- // Get fragment
- Expr fragment = null;
- int hi = uri.indexOf('#');
- if (hi != -1)
- {
- String f = uri.substring(hi + 1);
- uri = uri.substring(0, hi);
- // TODO handle xpointer() here
- // this only handles IDs
- fragment = new IdFunction(new Constant(f));
- }
-
- // Get document source
- try
- {
- DOMSource source;
- XSLURIResolver resolver = stylesheet.factory.resolver;
- synchronized (resolver)
- {
- if (stylesheet.transformer != null)
- {
- resolver.setUserResolver(stylesheet.transformer.uriResolver);
- resolver.setUserListener(stylesheet.transformer.errorListener);
- }
- source = resolver.resolveDOM(null, base, uri);
- }
- Node node = source.getNode();
- if (fragment == null)
- {
- return Collections.singleton(node);
- }
- else
- {
- Object ret = fragment.evaluate(node, 1, 1);
- if (!(ret instanceof Collection))
- {
- // XXX Report error?
- return Collections.EMPTY_SET;
- }
- return (Collection) ret;
- }
- }
- catch (TransformerException e)
- {
- String msg = "can't open " + uri;
- if (base != null)
- {
- msg += " with base " + base;
- }
- throw new RuntimeException(msg);
- }
- }
-
- public Expr clone(Object context)
- {
- Stylesheet s = stylesheet;
- if (context instanceof Stylesheet)
- {
- s = (Stylesheet) context;
- }
- DocumentFunction f = new DocumentFunction(s, base);
- int len = args.size();
- List args2 = new ArrayList(len);
- for (int i = 0; i < len; i++)
- {
- args2.add(((Expr) args.get(i)).clone(context));
- }
- f.setArguments(args2);
- return f;
- }
-
-}
diff --git a/libjava/gnu/xml/transform/ElementAvailableFunction.java b/libjava/gnu/xml/transform/ElementAvailableFunction.java
deleted file mode 100644
index 7cf00d3252d..00000000000
--- a/libjava/gnu/xml/transform/ElementAvailableFunction.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/* ElementAvailableFunction.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.TreeSet;
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.Function;
-
-/**
- * The XSLT <code>element-available</code> function.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class ElementAvailableFunction
- extends Expr
- implements Function, XPathFunction
-{
-
- static final Collection elements;
- static
- {
- TreeSet acc = new TreeSet();
- acc.add("stylesheet");
- acc.add("template");
- acc.add("param");
- acc.add("variable");
- acc.add("include");
- acc.add("import");
- acc.add("output");
- acc.add("preserve-space");
- acc.add("strip-space");
- acc.add("key");
- acc.add("decimal-format");
- acc.add("namespace-alias");
- acc.add("attribute-set");
- acc.add("apply-templates");
- acc.add("call-template");
- acc.add("value-of");
- acc.add("for-each");
- acc.add("if");
- acc.add("choose");
- acc.add("when");
- acc.add("otherwise");
- acc.add("element");
- acc.add("attribute");
- acc.add("text");
- acc.add("copy");
- acc.add("processing-instruction");
- acc.add("comment");
- acc.add("number");
- acc.add("copy-of");
- acc.add("message");
- acc.add("sort");
- acc.add("with-param");
- acc.add("fallback");
- acc.add("apply-imports");
- elements = Collections.unmodifiableSet(acc);
- }
-
- final NamespaceContext nsctx;
- List args;
-
- ElementAvailableFunction(NamespaceContext nsctx)
- {
- this.nsctx = nsctx;
- }
-
- public Object evaluate(List args)
- throws XPathFunctionException
- {
- // Useless...
- return Collections.EMPTY_SET;
- }
-
- public void setArguments(List args)
- {
- this.args = args;
- }
-
- public Object evaluate(Node context, int pos, int len)
- {
- Expr arg = (Expr) args.get(0);
- Object val = arg.evaluate(context, pos, len);
- String name = _string(context, val);
- String prefix, localName, uri;
- int ci = name.indexOf(':');
- if (ci == -1)
- {
- prefix = null;
- localName = name;
- }
- else
- {
- prefix = name.substring(0, ci);
- localName = name.substring(ci + 1);
- }
- uri = nsctx.getNamespaceURI(prefix);
- if (Stylesheet.XSL_NS.equals(uri))
- {
- return elements.contains(localName) ?
- Boolean.TRUE : Boolean.FALSE;
- // TODO extension elements
- }
- return Boolean.FALSE;
- }
-
- public Expr clone(Object context)
- {
- NamespaceContext n = nsctx;
- if (context instanceof NamespaceContext)
- {
- n = (NamespaceContext) context;
- }
- ElementAvailableFunction f = new ElementAvailableFunction(n);
- int len = args.size();
- List args2 = new ArrayList(len);
- for (int i = 0; i < len; i++)
- {
- args2.add(((Expr) args.get(i)).clone(context));
- }
- f.setArguments(args2);
- return f;
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/ElementNode.java b/libjava/gnu/xml/transform/ElementNode.java
deleted file mode 100644
index 3609f0e0c19..00000000000
--- a/libjava/gnu/xml/transform/ElementNode.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/* ElementNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.StringTokenizer;
-import javax.xml.XMLConstants;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing an XSL <code>element</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class ElementNode
- extends TemplateNode
-{
-
- final TemplateNode name;
- final TemplateNode namespace;
- final String uas;
- final Node source;
- final Collection elementExcludeResultPrefixes;
-
- ElementNode(TemplateNode children, TemplateNode next, TemplateNode name,
- TemplateNode namespace, String uas, Node source)
- {
- super(children, next);
- this.name = name;
- this.namespace = namespace;
- this.uas = uas;
- this.source = source;
- NamedNodeMap attrs = source.getAttributes();
- Node attr = attrs.getNamedItemNS(Stylesheet.XSL_NS,
- "exclude-result-prefixes");
- if (attr != null)
- {
- elementExcludeResultPrefixes = new HashSet();
- StringTokenizer st = new StringTokenizer(attr.getNodeValue());
- while (st.hasMoreTokens())
- {
- elementExcludeResultPrefixes.add(st.nextToken());
- }
- }
- else
- {
- elementExcludeResultPrefixes = Collections.EMPTY_SET;
- }
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new ElementNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- name.clone(stylesheet),
- (namespace == null) ? null :
- namespace.clone(stylesheet),
- uas, source);
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- Document doc = (parent instanceof Document) ? (Document) parent :
- parent.getOwnerDocument();
- // Create a document fragment to hold the name
- DocumentFragment fragment = doc.createDocumentFragment();
- // Apply name to the fragment
- name.apply(stylesheet, mode,
- context, pos, len,
- fragment, null);
- // Use XPath string-value of fragment
- String nameValue = Expr.stringValue(fragment);
-
- String namespaceValue = null;
- if (namespace != null)
- {
- // Create a document fragment to hold the namespace
- fragment = doc.createDocumentFragment();
- // Apply namespace to the fragment
- namespace.apply(stylesheet, mode,
- context, pos, len,
- fragment, null);
- // Use XPath string-value of fragment
- namespaceValue = Expr.stringValue(fragment);
- if (namespaceValue.length() == 0)
- {
- namespaceValue = null;
- }
- }
-
- String prefix = getPrefix(nameValue);
- if (XMLConstants.XMLNS_ATTRIBUTE.equals(prefix))
- {
- int ci = nameValue.indexOf(':');
- nameValue = nameValue.substring(ci + 1);
- }
- else
- {
- // Namespace aliasing
- if (prefix == null)
- {
- prefix = "#default";
- }
- String resultPrefix =
- (String) stylesheet.namespaceAliases.get(prefix);
- if (resultPrefix != null)
- {
- if ("#default".equals(resultPrefix))
- {
- resultPrefix = null;
- }
- namespaceValue = source.lookupNamespaceURI(resultPrefix);
- }
- if (prefix == "#default")
- {
- prefix = null;
- }
- // Look up ordinary namespace for this prefix
- if (namespaceValue == null)
- {
- if (XMLConstants.XML_NS_PREFIX.equals(prefix))
- {
- namespaceValue = XMLConstants.XML_NS_URI;
- }
- else
- {
- // Resolve namespace for this prefix
- namespaceValue = source.lookupNamespaceURI(prefix);
- }
- }
- /*if (prefix == null)
- {
- // Resolve prefix for this namespace
- prefix = parent.lookupPrefix(namespaceValue);
- if (prefix != null)
- {
- nameValue = prefix + ":" + nameValue;
- }
- }*/
- }
- // Create element
- Element element = (namespaceValue != null) ?
- doc.createElementNS(namespaceValue, nameValue) :
- doc.createElement(nameValue);
- if (nextSibling != null)
- {
- parent.insertBefore(element, nextSibling);
- }
- else
- {
- parent.appendChild(element);
- }
- stylesheet.addNamespaceNodes(source, element, doc,
- elementExcludeResultPrefixes);
- if (uas != null)
- {
- StringTokenizer st = new StringTokenizer(uas, " ");
- while (st.hasMoreTokens())
- {
- addAttributeSet(stylesheet, mode, context, pos, len,
- element, null, st.nextToken());
- }
- }
- if (children != null)
- {
- children.apply(stylesheet, mode,
- context, pos, len,
- element, null);
- }
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- final String getPrefix(String name)
- {
- int ci = name.indexOf(':');
- return (ci == -1) ? null : name.substring(0, ci);
- }
-
- void addAttributeSet(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling, String attributeSet)
- throws TransformerException
- {
- for (Iterator i = stylesheet.attributeSets.iterator(); i.hasNext(); )
- {
- AttributeSet as = (AttributeSet) i.next();
- if (!as.name.equals(attributeSet))
- {
- continue;
- }
- if (as.uas != null)
- {
- StringTokenizer st = new StringTokenizer(as.uas, " ");
- while (st.hasMoreTokens())
- {
- addAttributeSet(stylesheet, mode, context, pos, len,
- parent, nextSibling, st.nextToken());
- }
- }
- if (as.children != null)
- {
- as.children.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append("name=");
- buf.append(name);
- if (uas != null)
- {
- buf.append(",uas=");
- buf.append(uas);
- }
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/ErrorListenerErrorHandler.java b/libjava/gnu/xml/transform/ErrorListenerErrorHandler.java
deleted file mode 100644
index d79bb15467a..00000000000
--- a/libjava/gnu/xml/transform/ErrorListenerErrorHandler.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/* ErrorListenerErrorHandler.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.transform.ErrorListener;
-import javax.xml.transform.TransformerException;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * An ErrorHandler that wraps an ErrorListener.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class ErrorListenerErrorHandler
- implements ErrorHandler
-{
-
- final ErrorListener listener;
-
- ErrorListenerErrorHandler(ErrorListener listener)
- {
- this.listener = listener;
- }
-
- public void warning(SAXParseException e)
- throws SAXException
- {
- try
- {
- listener.warning(new TransformerException(e));
- }
- catch (TransformerException e2)
- {
- throw new SAXException(e2);
- }
- }
-
- public void error(SAXParseException e)
- throws SAXException
- {
- try
- {
- listener.error(new TransformerException(e));
- }
- catch (TransformerException e2)
- {
- throw new SAXException(e2);
- }
- }
-
- public void fatalError(SAXParseException e)
- throws SAXException
- {
- try
- {
- listener.fatalError(new TransformerException(e));
- }
- catch (TransformerException e2)
- {
- throw new SAXException(e2);
- }
- }
-
-}
diff --git a/libjava/gnu/xml/transform/ForEachNode.java b/libjava/gnu/xml/transform/ForEachNode.java
deleted file mode 100644
index fd9797dd474..00000000000
--- a/libjava/gnu/xml/transform/ForEachNode.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/* ForEachNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing an XSLT <code>for-each</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class ForEachNode
- extends TemplateNode
-{
-
- final Expr select;
- final List sortKeys;
-
- ForEachNode(TemplateNode children, TemplateNode next, Expr select,
- List sortKeys)
- {
- super(children, next);
- this.select = select;
- this.sortKeys = sortKeys;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- int len = sortKeys.size();
- List sortKeys2 = new ArrayList(len);
- for (int i = 0; i < len; i++)
- {
- sortKeys2.add(((Key) sortKeys.get(i)).clone(stylesheet));
- }
- return new ForEachNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- select.clone(stylesheet),
- sortKeys2);
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- if (children != null)
- {
- // Set current template to null
- Template saved = stylesheet.currentTemplate;
- stylesheet.currentTemplate = null;
- Object ret = select.evaluate(context, pos, len);
- //System.err.println(toString() + ": " + context+" -> "+ret);
- if (ret instanceof Collection)
- {
- Collection ns = (Collection) ret;
- List list = new ArrayList(ns);
- if (sortKeys != null)
- {
- for (Iterator i = sortKeys.iterator(); i.hasNext(); )
- {
- SortKey sortKey = (SortKey) i.next();
- sortKey.init(stylesheet, mode, context, pos, len, parent,
- nextSibling);
- }
- Collections.sort(list, new XSLComparator(sortKeys));
- }
- else
- {
- Collections.sort(list, documentOrderComparator);
- }
- // Perform children for each node
- int l = list.size();
- int p = 1;
- for (Iterator i = list.iterator(); i.hasNext(); )
- {
- Node node = (Node) i.next();
- stylesheet.current = node;
- children.apply(stylesheet, mode,
- node, p++, l,
- parent, nextSibling);
- }
- }
- // Restore current template
- stylesheet.currentTemplate = saved;
- }
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append("select=");
- buf.append(select);
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/FormatNumberFunction.java b/libjava/gnu/xml/transform/FormatNumberFunction.java
deleted file mode 100644
index aaa015b4ae9..00000000000
--- a/libjava/gnu/xml/transform/FormatNumberFunction.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/* FormatNumberFunction.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.Function;
-
-/**
- * The XSLT <code>format-number()</code>function.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class FormatNumberFunction
- extends Expr
- implements XPathFunction, Function
-{
-
- final Stylesheet stylesheet;
- List args;
-
- FormatNumberFunction(Stylesheet stylesheet)
- {
- this.stylesheet = stylesheet;
- }
-
- public Object evaluate(List args)
- throws XPathFunctionException
- {
- // Useless...
- return Collections.EMPTY_SET;
- }
-
- public void setArguments(List args)
- {
- this.args = args;
- }
-
- public Object evaluate(Node context, int pos, int len)
- {
- int arity = args.size();
- List values = new ArrayList(arity);
- for (int i = 0; i < arity; i++)
- {
- Expr arg = (Expr) args.get(i);
- values.add(arg.evaluate(context, pos, len));
- }
- double number = _number(context, values.get(0));
- String pattern = _string(context, values.get(1));
- // Currency symbol &#x00a4; is not supposed to be present
- if (pattern.indexOf('\u00a4') != -1)
- {
- // Replace with $ (Xalan does this)
- pattern = pattern.replace('\u00a4', '$');
- }
- String dfName = null;
- if (arity > 2)
- {
- dfName = _string(context, values.get(2));
- // otherwise the default decimal-format will be used
- }
- DecimalFormat df = (DecimalFormat) stylesheet.decimalFormats.get(dfName);
- if (df == null)
- {
- throw new IllegalArgumentException("No such decimal-format: " +
- dfName);
- }
- df.applyLocalizedPattern(pattern);
- return df.format(number);
- }
-
- public Expr clone(Object context)
- {
- Stylesheet s = stylesheet;
- if (context instanceof Stylesheet)
- {
- s = (Stylesheet) context;
- }
- FormatNumberFunction f = new FormatNumberFunction(s);
- int len = args.size();
- List args2 = new ArrayList(len);
- for (int i = 0; i < len; i++)
- {
- args2.add(((Expr) args.get(i)).clone(context));
- }
- f.setArguments(args2);
- return f;
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/FunctionAvailableFunction.java b/libjava/gnu/xml/transform/FunctionAvailableFunction.java
deleted file mode 100644
index b7dfb6192ff..00000000000
--- a/libjava/gnu/xml/transform/FunctionAvailableFunction.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/* FunctionAvailableFunction.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.TreeSet;
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.Function;
-
-/**
- * The XSLT <code>function-available</code> function.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class FunctionAvailableFunction
- extends Expr
- implements Function, XPathFunction
-{
-
- static final Collection xsltFunctions;
- static final Collection xpathFunctions;
- static
- {
- TreeSet acc = new TreeSet();
- acc.add("document");
- acc.add("key");
- acc.add("format-number");
- acc.add("current");
- acc.add("unparsed-entity-uri");
- acc.add("generate-id");
- acc.add("system-property");
- acc.add("element-available");
- acc.add("function-available");
- xsltFunctions = Collections.unmodifiableSet(acc);
- acc = new TreeSet();
- acc.add("boolean");
- acc.add("ceiling");
- acc.add("concat");
- acc.add("contains");
- acc.add("count");
- acc.add("false");
- acc.add("floor");
- acc.add("id");
- acc.add("lang");
- acc.add("last");
- acc.add("local-name");
- acc.add("name");
- acc.add("namespace-uri");
- acc.add("normalize-space");
- acc.add("not");
- acc.add("number");
- acc.add("position");
- acc.add("round");
- acc.add("starts-with");
- acc.add("string");
- acc.add("string-length");
- acc.add("substring-after");
- acc.add("substring-before");
- acc.add("substring");
- acc.add("sum");
- acc.add("translate");
- acc.add("true");
- xpathFunctions = Collections.unmodifiableSet(acc);
- }
-
- final NamespaceContext nsctx;
- List args;
-
- FunctionAvailableFunction(NamespaceContext nsctx)
- {
- this.nsctx = nsctx;
- }
-
- public Object evaluate(List args)
- throws XPathFunctionException
- {
- // Useless...
- return Collections.EMPTY_SET;
- }
-
- public void setArguments(List args)
- {
- this.args = args;
- }
-
- public Object evaluate(Node context, int pos, int len)
- {
- Expr arg = (Expr) args.get(0);
- Object val = arg.evaluate(context, pos, len);
- String name = _string(context, val);
- String prefix, localName, uri;
- int ci = name.indexOf(':');
- if (ci == -1)
- {
- prefix = null;
- localName = name;
- }
- else
- {
- prefix = name.substring(0, ci);
- localName = name.substring(ci + 1);
- }
- uri = nsctx.getNamespaceURI(prefix);
- if (uri == null)
- {
- return xsltFunctions.contains(localName) ||
- xpathFunctions.contains(localName) ?
- Boolean.TRUE : Boolean.FALSE;
- // TODO extension functions
- }
- return Boolean.FALSE;
- }
-
- public Expr clone(Object context)
- {
- NamespaceContext n = nsctx;
- if (context instanceof NamespaceContext)
- {
- n = (NamespaceContext) context;
- }
- FunctionAvailableFunction f = new FunctionAvailableFunction(n);
- int len = args.size();
- List args2 = new ArrayList(len);
- for (int i = 0; i < len; i++)
- {
- args2.add(((Expr) args.get(i)).clone(context));
- }
- f.setArguments(args2);
- return f;
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/GenerateIdFunction.java b/libjava/gnu/xml/transform/GenerateIdFunction.java
deleted file mode 100644
index a7682c91802..00000000000
--- a/libjava/gnu/xml/transform/GenerateIdFunction.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/* GenerateIdFunction.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.Function;
-
-/**
- * The XSLT <code>generate-id()</code>function.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class GenerateIdFunction
- extends Expr
- implements XPathFunction, Function
-{
-
- List args;
-
- public Object evaluate(List args)
- throws XPathFunctionException
- {
- // Useless...
- return Collections.EMPTY_SET;
- }
-
- public void setArguments(List args)
- {
- this.args = args;
- }
-
- public Object evaluate(Node context, int pos, int len)
- {
- int arity = args.size();
- List values = new ArrayList(arity);
- for (int i = 0; i < arity; i++)
- {
- Expr arg = (Expr) args.get(i);
- values.add(arg.evaluate(context, pos, len));
- }
- Node node;
- Collection ns = (arity == 0) ? Collections.EMPTY_SET :
- (Collection) values.get(0);
- if (ns.isEmpty())
- {
- node = context;
- }
- else
- {
- List list = new ArrayList(ns);
- Collections.sort(list, documentOrderComparator);
- node = (Node) list.get(0);
- }
-
- String name = node.getNodeName();
- int index = 0, depth = 0;
- for (Node ctx = node.getPreviousSibling(); ctx != null;
- ctx = ctx.getPreviousSibling())
- {
- index++;
- }
- for (Node ctx = node.getParentNode(); ctx != null;
- ctx = ctx.getParentNode())
- {
- depth++;
- }
- return name + "-" + index + "-" + depth;
- }
-
- public Expr clone(Object context)
- {
- GenerateIdFunction f = new GenerateIdFunction();
- int len = args.size();
- List args2 = new ArrayList(len);
- for (int i = 0; i < len; i++)
- {
- args2.add(((Expr) args.get(i)).clone(context));
- }
- f.setArguments(args2);
- return f;
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/IfNode.java b/libjava/gnu/xml/transform/IfNode.java
deleted file mode 100644
index f277cce07b9..00000000000
--- a/libjava/gnu/xml/transform/IfNode.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/* IfNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing an XSL <code>if</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class IfNode
- extends TemplateNode
-{
-
- final Expr test;
-
- IfNode(TemplateNode children, TemplateNode next, Expr test)
- {
- super(children, next);
- this.test = test;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new IfNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- test.clone(stylesheet));
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- Object ret = test.evaluate(context, pos, len);
- boolean success = (ret instanceof Boolean) ?
- ((Boolean) ret).booleanValue() :
- Expr._boolean(context, ret);
- if (success)
- {
- if (children != null)
- {
- children.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append("test=");
- buf.append(test);
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/Key.java b/libjava/gnu/xml/transform/Key.java
deleted file mode 100644
index 72bd90aedb0..00000000000
--- a/libjava/gnu/xml/transform/Key.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Key.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.namespace.QName;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.Pattern;
-
-/**
- * An XSL key.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class Key
-{
-
- final QName name;
- final Pattern match;
- final Expr use;
-
- Key(QName name, Pattern match, Expr use)
- {
- this.name = name;
- this.match = match;
- this.use = use;
- }
-
- Key clone(Stylesheet stylesheet)
- {
- return new Key(name,
- (Pattern) match.clone(stylesheet),
- use.clone(stylesheet));
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/KeyFunction.java b/libjava/gnu/xml/transform/KeyFunction.java
deleted file mode 100644
index eb842f289c9..00000000000
--- a/libjava/gnu/xml/transform/KeyFunction.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/* KeyFunction.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import javax.xml.namespace.QName;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionException;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.Function;
-import gnu.xml.xpath.Pattern;
-
-/**
- * The XSLT <code>key()</code>function.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class KeyFunction
- extends Pattern
- implements XPathFunction, Function
-{
-
- final Stylesheet stylesheet;
- List args;
-
- KeyFunction(Stylesheet stylesheet)
- {
- this.stylesheet = stylesheet;
- }
-
- public Object evaluate(List args)
- throws XPathFunctionException
- {
- // Useless...
- return Collections.EMPTY_SET;
- }
-
- public void setArguments(List args)
- {
- this.args = args;
- }
-
- public boolean matches(Node context)
- {
- Object ret = evaluate(context, 1, 1);
- return !((Collection) ret).isEmpty();
- }
-
- public Object evaluate(Node context, int pos, int len)
- {
- // Evaluate arguments
- int arity = args.size();
- List values = new ArrayList(arity);
- for (int i = 0; i < arity; i++)
- {
- Expr arg = (Expr) args.get(i);
- values.add(arg.evaluate(context, pos, len));
- }
- // Get key name
- QName keyName = QName.valueOf(_string(context, values.get(0)));
- // Expand qualified name
- String uri = keyName.getNamespaceURI();
- String prefix = keyName.getPrefix();
- if ((uri == null || uri.length() == 0) &&
- (prefix != null && prefix.length() > 0))
- {
- uri = stylesheet.getNamespaceURI(prefix);
- if (uri != null && uri.length() > 0)
- {
- String localName = keyName.getLocalPart();
- keyName = new QName(uri, localName, prefix);
- }
- }
- // Compute matching key set
- Collection keySet = new LinkedList();
- for (Iterator i = stylesheet.keys.iterator(); i.hasNext(); )
- {
- Key key = (Key) i.next();
- if (key.name.equals(keyName))
- {
- keySet.add(key);
- }
- }
- // Get target
- Object target = values.get(1);
- Collection acc = new LinkedHashSet();
- Document doc = (context instanceof Document) ? (Document) context :
- context.getOwnerDocument();
- if (target instanceof Collection)
- {
- for (Iterator i = ((Collection) target).iterator(); i.hasNext(); )
- {
- String val = Expr.stringValue((Node) i.next());
- addKeyNodes(doc, keySet, val, acc);
- }
- }
- else
- {
- String val = Expr._string(context, target);
- addKeyNodes(doc, keySet, val, acc);
- }
- List ret = new ArrayList(acc);
- Collections.sort(ret, documentOrderComparator);
- return ret;
- }
-
- final void addKeyNodes(Node node, Collection keySet,
- String value, Collection acc)
- {
- addKeyNodeIfMatch(node, keySet, value, acc);
- // Apply children
- for (Node ctx = node.getFirstChild(); ctx != null;
- ctx = ctx.getNextSibling())
- {
- addKeyNodes(ctx, keySet, value, acc);
- }
- }
-
- final void addKeyNodeIfMatch(Node node, Collection keySet,
- String value, Collection acc)
- {
- for (Iterator i = keySet.iterator(); i.hasNext(); )
- {
- Key key = (Key) i.next();
- if (key.match.matches(node))
- {
- Object eval = key.use.evaluate(node, 1, 1);
- if (eval instanceof Collection)
- {
- for (Iterator j = ((Collection) eval).iterator();
- j.hasNext(); )
- {
- String keyValue = Expr.stringValue((Node) j.next());
- if (value.equals(keyValue))
- {
- acc.add(node);
- return;
- }
- }
- }
- else
- {
- String keyValue = Expr._string(node, eval);
- if (value.equals(keyValue))
- {
- acc.add(node);
- return;
- }
- }
- }
- }
- }
-
- public Expr clone(Object context)
- {
- Stylesheet s = stylesheet;
- if (context instanceof Stylesheet)
- {
- s = (Stylesheet) context;
- }
- KeyFunction f = new KeyFunction(s);
- int len = args.size();
- List args2 = new ArrayList(len);
- for (int i = 0; i < len; i++)
- {
- args2.add(((Expr) args.get(i)).clone(context));
- }
- f.setArguments(args2);
- return f;
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/LiteralNode.java b/libjava/gnu/xml/transform/LiteralNode.java
deleted file mode 100644
index b053727d7f3..00000000000
--- a/libjava/gnu/xml/transform/LiteralNode.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/* LiteralNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.StringTokenizer;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-
-/**
- * A template node that copies a DOM node in the template to the result
- * tree.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class LiteralNode
- extends TemplateNode
-{
-
- /**
- * The source node in the XSL template.
- */
- final Node source;
-
- final Collection elementExcludeResultPrefixes;
-
- LiteralNode(TemplateNode children, TemplateNode next, Node source)
- {
- super(children, next);
- this.source = source;
- if (source.getNodeType() == Node.ELEMENT_NODE)
- {
- NamedNodeMap attrs = source.getAttributes();
- Node attr = attrs.getNamedItemNS(Stylesheet.XSL_NS,
- "exclude-result-prefixes");
- if (attr != null)
- {
- elementExcludeResultPrefixes = new HashSet();
- StringTokenizer st = new StringTokenizer(attr.getNodeValue());
- while (st.hasMoreTokens())
- {
- elementExcludeResultPrefixes.add(st.nextToken());
- }
- }
- else
- {
- elementExcludeResultPrefixes = Collections.EMPTY_SET;
- }
- }
- else
- {
- elementExcludeResultPrefixes = null;
- }
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new LiteralNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- source);
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- Node result = null;
- Document doc = (parent instanceof Document) ? (Document) parent :
- parent.getOwnerDocument();
- short nodeType = source.getNodeType();
- if (nodeType == Node.ATTRIBUTE_NODE &&
- parent.getFirstChild() != null)
- {
- // Ignore attributes added after child elements
- }
- else
- {
- // Namespace aliasing
- if (nodeType == Node.ELEMENT_NODE)
- {
- String prefix = source.getPrefix();
- if (prefix == null)
- {
- prefix = "#default";
- }
- String resultPrefix =
- (String) stylesheet.namespaceAliases.get(prefix);
- if (resultPrefix != null)
- {
- if ("#default".equals(resultPrefix))
- {
- resultPrefix = null;
- }
- String uri = source.lookupNamespaceURI(resultPrefix);
- String name = source.getNodeName();
- // Create a new element node in the result document
- result = doc.createElementNS(uri, name);
- // copy attributes
- NamedNodeMap srcAttrs = source.getAttributes();
- NamedNodeMap dstAttrs = result.getAttributes();
- int l = srcAttrs.getLength();
- for (int i = 0; i < l; i++)
- {
- Node attr = srcAttrs.item(i);
- if (!Stylesheet.XSL_NS.equals(attr.getNamespaceURI()))
- {
- attr = attr.cloneNode(true);
- attr = doc.adoptNode(attr);
- dstAttrs.setNamedItemNS(attr);
- }
- }
- }
- }
- if (result == null)
- {
- // Create result node
- result = source.cloneNode(false);
- // Remove any XSL attributes
- NamedNodeMap attrs = result.getAttributes();
- if (attrs != null)
- {
- int l = attrs.getLength();
- for (int i = 0; i < l; i++)
- {
- Node attr = attrs.item(i);
- if (Stylesheet.XSL_NS.equals(attr.getNamespaceURI()))
- {
- attrs.removeNamedItem(attr.getNodeName());
- i--;
- l--;
- }
- }
- }
- result = doc.adoptNode(result);
- if (result == null)
- {
- String msg = "Error adopting node to result tree";
- DOMSourceLocator l = new DOMSourceLocator(context);
- throw new TransformerException(msg, l);
- }
- }
- if (nextSibling != null)
- {
- parent.insertBefore(result, nextSibling);
- }
- else
- {
- parent.appendChild(result);
- }
- if (nodeType == Node.ELEMENT_NODE)
- {
- stylesheet.addNamespaceNodes(source, result, doc,
- elementExcludeResultPrefixes);
- }
- // children
- if (children != null)
- {
- children.apply(stylesheet, mode,
- context, pos, len,
- result, null);
- }
- }
- // next sibling
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append("source=");
- buf.append(source);
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/MessageNode.java b/libjava/gnu/xml/transform/MessageNode.java
deleted file mode 100644
index 9feeb752788..00000000000
--- a/libjava/gnu/xml/transform/MessageNode.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/* MessageNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * An XSL <code>message</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class MessageNode
- extends TemplateNode
-{
-
- final boolean terminate;
-
- MessageNode(TemplateNode children, TemplateNode next, boolean terminate)
- {
- super(children, next);
- this.terminate = terminate;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new MessageNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- terminate);
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- if (children != null)
- {
- Document doc = (parent instanceof Document) ? (Document) parent :
- parent.getOwnerDocument();
- DocumentFragment fragment = doc.createDocumentFragment();
- children.apply(stylesheet, mode, context, pos, len, fragment, null);
- String message = Expr.stringValue(fragment);
- System.err.println(message);
- if (terminate)
- {
- stylesheet.terminated = true;
- }
- }
- if (next != null && !terminate)
- {
- next.apply(stylesheet, mode, context, pos, len, parent, nextSibling);
- }
- }
-
-}
diff --git a/libjava/gnu/xml/transform/NodeNumberNode.java b/libjava/gnu/xml/transform/NodeNumberNode.java
deleted file mode 100644
index 99ffe8bbb24..00000000000
--- a/libjava/gnu/xml/transform/NodeNumberNode.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/* NodeNumberNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.Pattern;
-import gnu.xml.xpath.Selector;
-import gnu.xml.xpath.UnionExpr;
-
-/**
- * A template node representing the XSL <code>number</code> instruction
- * with no <code>value</code> expression, i.e. the value is computed from
- * the document position of the context node.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class NodeNumberNode
- extends AbstractNumberNode
-{
-
- static final int SINGLE = 0;
- static final int MULTIPLE = 1;
- static final int ANY = 2;
-
- final int level;
- final Pattern count;
- final Pattern from;
-
- NodeNumberNode(TemplateNode children, TemplateNode next,
- int level, Pattern count, Pattern from,
- TemplateNode format, String lang,
- int letterValue, String groupingSeparator, int groupingSize)
- {
- super(children, next, format, lang, letterValue, groupingSeparator,
- groupingSize);
- this.level = level;
- this.count = count;
- this.from = from;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new NodeNumberNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- level,
- (count == null) ? null :
- (Pattern) count.clone(stylesheet),
- (from == null) ? from :
- (Pattern) from.clone(stylesheet),
- format, lang, letterValue,
- groupingSeparator, groupingSize);
- }
-
- int[] compute(Stylesheet stylesheet, Node context, int pos, int len)
- throws TransformerException
- {
- /*if (from != null)
- {
- Object ret = from.evaluate(context, pos, len);
- if (ret instanceof Collection)
- {
- Collection ns = (Collection) ret;
- if (ns.size() > 0)
- {
- List list = new ArrayList(ns);
- Collections.sort(list, documentOrderComparator);
- context = (Node) list.get(0);
- }
- else
- {
- return new int[0];
- }
- }
- else
- {
- return new int[0];
- }
- }*/
- Node current = context;
- switch (level)
- {
- case SINGLE:
- if (from == null)
- {
- while (context != null && !countMatches(current, context))
- {
- context = context.getParentNode();
- }
- }
- else
- {
- while (context != null && !countMatches(current, context) &&
- !fromMatches(context))
- {
- context = context.getParentNode();
- }
- }
- return (context == null) ? new int[0] :
- new int[] { (context == current) ? pos : getIndex(current, context) };
- case MULTIPLE:
- List ancestors = new ArrayList();
- while (context != null)
- {
- if (countMatches(current, context))
- {
- if (from == null || fromMatches(context))
- {
- ancestors.add(context);
- }
- }
- context = context.getParentNode();
- }
- Collections.sort(ancestors, documentOrderComparator);
- int[] ret = new int[ancestors.size()];
- for (int i = 0; i < ret.length; i++)
- {
- ret[i] = getIndex(current, (Node) ancestors.get(i));
- }
- return ret;
- case ANY:
- Expr preceding = new Selector(Selector.PRECEDING,
- Collections.EMPTY_LIST);
- Expr ancestorOrSelf = new Selector(Selector.ANCESTOR_OR_SELF,
- Collections.EMPTY_LIST);
- Expr any = new UnionExpr(preceding, ancestorOrSelf);
- Object eval = any.evaluate(context, pos, len);
- if (eval instanceof Collection)
- {
- Collection ns = (Collection) eval;
- List candidates = new ArrayList();
- for (Iterator i = ns.iterator(); i.hasNext(); )
- {
- Node candidate = (Node) i.next();
- if (countMatches(current, candidate))
- {
- candidates.add(candidate);
- if (from != null && from.matches(candidate))
- {
- break;
- }
- }
- }
- return new int[] { candidates.size() };
- }
- return new int[0];
- default:
- throw new TransformerException("invalid level");
- }
- }
-
- boolean countMatches(Node current, Node node)
- {
- if (count == null)
- {
- int cnt = current.getNodeType();
- int nnt = node.getNodeType();
- if (cnt != nnt)
- {
- return false;
- }
- if (nnt == Node.ELEMENT_NODE || nnt == Node.ATTRIBUTE_NODE)
- {
- String curi = current.getNamespaceURI();
- String nuri = node.getNamespaceURI();
- if ((curi == null && nuri != null) ||
- (curi != null && !curi.equals(nuri)))
- {
- return false;
- }
- String cn = current.getLocalName();
- String nn = current.getLocalName();
- if (!cn.equals(nn))
- {
- return false;
- }
- }
- return true;
- }
- else
- {
- return count.matches(node);
- }
- }
-
- boolean fromMatches(Node node)
- {
- for (Node ctx = node.getParentNode(); ctx != null;
- ctx = ctx.getParentNode())
- {
- if (from.matches(ctx))
- {
- return true;
- }
- }
- return false;
- }
-
- int getIndex(Node current, Node node)
- {
- int index = 0;
- do
- {
- do
- {
- node = node.getPreviousSibling();
- }
- while (node != null && !countMatches(current, node));
- index++;
- }
- while (node != null);
- return index;
- }
-
-}
diff --git a/libjava/gnu/xml/transform/NumberNode.java b/libjava/gnu/xml/transform/NumberNode.java
deleted file mode 100644
index c16324b63a4..00000000000
--- a/libjava/gnu/xml/transform/NumberNode.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/* NumberNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing the XSL <code>number</code> instruction
- * with a <code>value</code> expression.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class NumberNode
- extends AbstractNumberNode
-{
-
- final Expr value;
-
- NumberNode(TemplateNode children, TemplateNode next,
- Expr value, TemplateNode format, String lang,
- int letterValue, String groupingSeparator, int groupingSize)
- {
- super(children, next, format, lang, letterValue, groupingSeparator,
- groupingSize);
- this.value = value;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new NumberNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- value.clone(stylesheet),
- format, lang, letterValue,
- groupingSeparator, groupingSize);
- }
-
- int[] compute(Stylesheet stylesheet, Node context, int pos, int len)
- throws TransformerException
- {
- Object ret = value.evaluate(context, pos, len);
- Double d = (ret instanceof Double) ? ((Double) ret) :
- new Double(Expr._number(context, ret));
- return new int[] { d.intValue() };
- }
-
-}
diff --git a/libjava/gnu/xml/transform/OtherwiseNode.java b/libjava/gnu/xml/transform/OtherwiseNode.java
deleted file mode 100644
index 00a3d9d3c81..00000000000
--- a/libjava/gnu/xml/transform/OtherwiseNode.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/* OtherwiseNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Node;
-
-/**
- * A template node representing an XSL <code>otherwise</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class OtherwiseNode
- extends TemplateNode
-{
-
- OtherwiseNode(TemplateNode children, TemplateNode next)
- {
- super(children, next);
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new OtherwiseNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet));
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- if (children != null)
- {
- children.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/ParameterNode.java b/libjava/gnu/xml/transform/ParameterNode.java
deleted file mode 100644
index 8d709f80115..00000000000
--- a/libjava/gnu/xml/transform/ParameterNode.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/* ParameterNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.Collections;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node that sets a variable or parameter during template
- * processing.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class ParameterNode
- extends TemplateNode
-{
-
- final String name;
- final Expr select;
- final boolean global;
-
- ParameterNode(TemplateNode children, TemplateNode next,
- String name, Expr select, boolean global)
- {
- super(children, next);
- this.name = name;
- this.select = select;
- this.global = global;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new ParameterNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- name,
- select.clone(stylesheet),
- global);
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- boolean apply = global || !stylesheet.bindings.containsKey(name, global);
- if (apply)
- {
- // push the variable context
- stylesheet.bindings.push(global);
- // set the variable
- Object value = getValue(stylesheet, mode, context, pos, len);
- if (value != null)
- {
- stylesheet.bindings.set(name, value, global);
- }
- }
- // variable and param don't process children as such
- // all subsequent instructions are processed with that variable context
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- if (apply)
- {
- // pop the variable context
- stylesheet.bindings.pop(global);
- }
- }
-
- Object getValue(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len)
- throws TransformerException
- {
- if (select != null)
- {
- return select.evaluate(context, pos, len);
- }
- else if (children != null)
- {
- Document doc = (context instanceof Document) ? (Document) context :
- context.getOwnerDocument();
- DocumentFragment fragment = doc.createDocumentFragment();
- children.apply(stylesheet, mode, context, pos, len, fragment, null);
- return Collections.singleton(fragment);
- }
- else
- {
- return null;
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append("name=");
- buf.append(name);
- if (select != null)
- {
- buf.append(",select=");
- buf.append(select);
- }
- if (global)
- {
- buf.append(",global");
- }
- buf.append(']');
- return buf.toString();
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/ProcessingInstructionNode.java b/libjava/gnu/xml/transform/ProcessingInstructionNode.java
deleted file mode 100644
index e6823a5b2c6..00000000000
--- a/libjava/gnu/xml/transform/ProcessingInstructionNode.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/* ProcessingInstructionNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Node;
-import org.w3c.dom.ProcessingInstruction;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing the XSL <code>processing-instruction</code>
- * instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class ProcessingInstructionNode
- extends TemplateNode
-{
-
- final String name;
-
- ProcessingInstructionNode(TemplateNode children, TemplateNode next,
- String name)
- {
- super(children, next);
- this.name = name;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new ProcessingInstructionNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- name);
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- String data = null;
- Document doc = (parent instanceof Document) ? (Document) parent :
- parent.getOwnerDocument();
- if (children != null)
- {
- // Create a document fragment to hold the text
- DocumentFragment fragment = doc.createDocumentFragment();
- // Apply children to the fragment
- children.apply(stylesheet, mode,
- context, pos, len,
- fragment, null);
- // Use XPath string-value of fragment
- data = Expr.stringValue(fragment);
- }
- ProcessingInstruction pi = doc.createProcessingInstruction(name, data);
- // Insert into result tree
- if (nextSibling != null)
- {
- parent.insertBefore(pi, nextSibling);
- }
- else
- {
- parent.appendChild(pi);
- }
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append("name=");
- buf.append(name);
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/SAXSerializer.java b/libjava/gnu/xml/transform/SAXSerializer.java
deleted file mode 100644
index 9650e3e052d..00000000000
--- a/libjava/gnu/xml/transform/SAXSerializer.java
+++ /dev/null
@@ -1,305 +0,0 @@
-/* SAXSerializer.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import org.w3c.dom.Attr;
-import org.w3c.dom.DocumentType;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.ext.LexicalHandler;
-
-/**
- * Serializes a DOM node to a sequence of SAX events.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class SAXSerializer
- implements Attributes
-{
-
- transient NamedNodeMap attrs;
- transient LinkedList namespaces = new LinkedList();
-
- boolean isDefined(String prefix, String uri)
- {
- for (Iterator i = namespaces.iterator(); i.hasNext(); )
- {
- HashMap ctx = (HashMap) i.next();
- if (uri.equals(ctx.get(prefix)))
- {
- return true;
- }
- }
- return false;
- }
-
- void define(String prefix, String uri)
- {
- for (Iterator i = namespaces.iterator(); i.hasNext(); )
- {
- HashMap ctx = (HashMap) i.next();
- if (ctx.containsKey(prefix))
- {
- HashMap newCtx = new HashMap();
- newCtx.put(prefix, uri);
- namespaces.addFirst(newCtx);
- return;
- }
- }
- HashMap ctx;
- if (namespaces.isEmpty())
- {
- ctx = new HashMap();
- namespaces.add(ctx);
- }
- else
- {
- ctx = (HashMap) namespaces.getFirst();
- }
- ctx.put(prefix, uri);
- }
-
- void undefine(String prefix, String uri)
- {
- for (Iterator i = namespaces.iterator(); i.hasNext(); )
- {
- HashMap ctx = (HashMap) i.next();
- if (uri.equals(ctx.get(prefix)))
- {
- ctx.remove(prefix);
- if (ctx.isEmpty())
- {
- namespaces.remove(ctx);
- }
- return;
- }
- }
- }
-
- public int getLength()
- {
- return attrs.getLength();
- }
-
- public String getURI(int index)
- {
- return attrs.item(index).getNamespaceURI();
- }
-
- public String getLocalName(int index)
- {
- return attrs.item(index).getLocalName();
- }
-
- public String getQName(int index)
- {
- return attrs.item(index).getNodeName();
- }
-
- public String getType(int index)
- {
- Attr attr = (Attr) attrs.item(index);
- return attr.isId() ? "ID" : "CDATA";
- }
-
- public String getValue(int index)
- {
- return attrs.item(index).getNodeValue();
- }
-
- public int getIndex(String uri, String localName)
- {
- int len = attrs.getLength();
- for (int i = 0; i < len; i++)
- {
- Node attr = attrs.item(i);
- String a_uri = attr.getNamespaceURI();
- String a_localName = attr.getLocalName();
- if (((a_uri == null && uri == null) ||
- (a_uri != null && a_uri.equals(uri))) &&
- a_localName.equals(localName))
- {
- return i;
- }
- }
- return -1;
- }
-
- public int getIndex(String qName)
- {
- int len = attrs.getLength();
- for (int i = 0; i < len; i++)
- {
- Node attr = attrs.item(i);
- String a_name = attr.getNodeName();
- if (a_name.equals(qName))
- {
- return i;
- }
- }
- return -1;
- }
-
- public String getType(String uri, String localName)
- {
- Attr attr = (Attr) attrs.getNamedItemNS(uri, localName);
- return attr.isId() ? "ID" : "CDATA";
- }
-
- public String getType(String qName)
- {
- Attr attr = (Attr) attrs.getNamedItem(qName);
- return attr.isId() ? "ID" : "CDATA";
- }
-
- public String getValue(String uri, String localName)
- {
- return attrs.getNamedItemNS(uri, localName).getNodeValue();
- }
-
- public String getValue(String qName)
- {
- return attrs.getNamedItem(qName).getNodeValue();
- }
-
- void serialize(Node node, ContentHandler ch, LexicalHandler lh)
- throws SAXException
- {
- attrs = node.getAttributes();
- Node children;
- Node next = node.getNextSibling();
- switch (node.getNodeType())
- {
- case Node.ELEMENT_NODE:
- String uri = node.getNamespaceURI();
- String prefix = node.getPrefix();
- boolean defined = isDefined(prefix, uri);
- if (!defined)
- {
- define(prefix, uri);
- ch.startPrefixMapping(prefix, uri);
- }
- String localName = node.getLocalName();
- String qName = node.getNodeName();
- ch.startElement(uri, localName, qName, this);
- children = node.getFirstChild();
- if (children != null)
- {
- serialize(children, ch, lh);
- }
- ch.endElement(uri, localName, qName);
- if (!defined)
- {
- ch.endPrefixMapping(prefix);
- undefine(prefix, uri);
- }
- break;
- case Node.TEXT_NODE:
- char[] chars = node.getNodeValue().toCharArray();
- ch.characters(chars, 0, chars.length);
- break;
- case Node.CDATA_SECTION_NODE:
- char[] cdata = node.getNodeValue().toCharArray();
- if (lh != null)
- {
- lh.startCDATA();
- ch.characters(cdata, 0, cdata.length);
- lh.endCDATA();
- }
- else
- {
- ch.characters(cdata, 0, cdata.length);
- }
- break;
- case Node.COMMENT_NODE:
- if (lh != null)
- {
- char[] comment = node.getNodeValue().toCharArray();
- lh.comment(comment, 0, comment.length);
- }
- break;
- case Node.DOCUMENT_NODE:
- case Node.DOCUMENT_FRAGMENT_NODE:
- ch.startDocument();
- children = node.getFirstChild();
- if (children != null)
- {
- serialize(children, ch, lh);
- }
- ch.endDocument();
- break;
- case Node.DOCUMENT_TYPE_NODE:
- if (lh != null)
- {
- DocumentType doctype = (DocumentType) node;
- String publicId = doctype.getPublicId();
- String systemId = doctype.getSystemId();
- lh.startDTD(node.getNodeName(), publicId, systemId);
- NamedNodeMap entities = doctype.getEntities();
- int len = entities.getLength();
- for (int i = 0; i < len; i++)
- {
- Node entity = entities.item(i);
- String entityName = entity.getNodeName();
- lh.startEntity(entityName);
- lh.endEntity(entityName);
- }
- lh.endDTD();
- }
- break;
- case Node.PROCESSING_INSTRUCTION_NODE:
- ch.processingInstruction(node.getNodeName(), node.getNodeValue());
- break;
- case Node.ENTITY_REFERENCE_NODE:
- ch.skippedEntity(node.getNodeName());
- break;
- }
- attrs = null;
- if (next != null)
- {
- serialize(next, ch, lh);
- }
- }
-
-}
diff --git a/libjava/gnu/xml/transform/SortKey.java b/libjava/gnu/xml/transform/SortKey.java
deleted file mode 100644
index 1ec9bdd57b9..00000000000
--- a/libjava/gnu/xml/transform/SortKey.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/* SortKey.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * An XSL sort key.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class SortKey
-{
-
- static final int DEFAULT = 0;
- static final int UPPER_FIRST = 1;
- static final int LOWER_FIRST = 2;
-
- final Expr select;
- final TemplateNode langTemplate;
- final TemplateNode dataTypeTemplate;
- final TemplateNode orderTemplate;
- final TemplateNode caseOrderTemplate;
-
- transient String lang;
- transient String dataType;
- transient boolean descending;
- transient int caseOrder;
-
- SortKey(Expr select, TemplateNode lang, TemplateNode dataType,
- TemplateNode order, TemplateNode caseOrder)
- {
- this.select = select;
- this.langTemplate = lang;
- this.dataTypeTemplate = dataType;
- this.orderTemplate = order;
- this.caseOrderTemplate = caseOrder;
- }
-
- String key(Node node)
- {
- Object ret = select.evaluate(node, 1, 1);
- if (ret instanceof String)
- {
- return (String) ret;
- }
- else
- {
- return Expr._string(node, ret);
- }
- }
-
- /**
- * Prepare for a sort.
- * This sets all transient variables from their AVTs.
- */
- void init(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- Document doc = (context instanceof Document) ? (Document) context :
- context.getOwnerDocument();
- if (langTemplate == null)
- {
- lang = null;
- }
- else
- {
- DocumentFragment fragment = doc.createDocumentFragment();
- langTemplate.apply(stylesheet, mode, context, pos, len,
- fragment, null);
- lang = Expr.stringValue(fragment);
- }
- if (dataTypeTemplate == null)
- {
- dataType = "text";
- }
- else
- {
- DocumentFragment fragment = doc.createDocumentFragment();
- dataTypeTemplate.apply(stylesheet, mode, context, pos, len,
- fragment, null);
- dataType = Expr.stringValue(fragment);
- }
- if (orderTemplate == null)
- {
- descending = false;
- }
- else
- {
- DocumentFragment fragment = doc.createDocumentFragment();
- orderTemplate.apply(stylesheet, mode, context, pos, len,
- fragment, null);
- String order = Expr.stringValue(fragment);
- descending = "descending".equals(order);
- }
- if (caseOrderTemplate == null)
- {
- caseOrder = DEFAULT;
- }
- else
- {
- DocumentFragment fragment = doc.createDocumentFragment();
- caseOrderTemplate.apply(stylesheet, mode, context, pos, len,
- fragment, null);
- String co = Expr.stringValue(fragment);
- caseOrder = "upper-first".equals(co) ? UPPER_FIRST :
- "lower-first".equals(co) ? LOWER_FIRST :
- DEFAULT;
- }
- }
-
-}
diff --git a/libjava/gnu/xml/transform/StreamSerializer.java b/libjava/gnu/xml/transform/StreamSerializer.java
deleted file mode 100644
index 80a1f7016a5..00000000000
--- a/libjava/gnu/xml/transform/StreamSerializer.java
+++ /dev/null
@@ -1,632 +0,0 @@
-/* StreamSerializer.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import javax.xml.XMLConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentType;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-
-/**
- * Serializes a DOM node to an output stream.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-public class StreamSerializer
-{
-
- static final int SPACE = 0x20;
- static final int BANG = 0x21; // !
- static final int APOS = 0x27; // '
- static final int SLASH = 0x2f; // /
- static final int BRA = 0x3c; // <
- static final int KET = 0x3e; // >
- static final int EQ = 0x3d; // =
-
- protected String encoding;
- boolean compatibilityMode;
- final int mode;
- final Map namespaces;
- protected String eol;
- Collection cdataSectionElements = Collections.EMPTY_SET;
-
- protected boolean discardDefaultContent;
- protected boolean xmlDeclaration = true;
-
- public StreamSerializer()
- {
- this(Stylesheet.OUTPUT_XML, null, null);
- }
-
- public StreamSerializer(String encoding)
- {
- this(Stylesheet.OUTPUT_XML, encoding, null);
- }
-
- public StreamSerializer(int mode, String encoding, String eol)
- {
- this.mode = mode;
- if (encoding == null)
- {
- encoding = "UTF-8";
- }
- this.encoding = encoding.intern();
- compatibilityMode = true;
- if (encoding.length() > 3)
- {
- String p = encoding.substring(0, 3);
- if (p.equalsIgnoreCase("UTF") ||
- p.equalsIgnoreCase("UCS"))
- {
- compatibilityMode = false;
- }
- }
- this.eol = (eol != null) ? eol : System.getProperty("line.separator");
- namespaces = new HashMap();
- }
-
- void setCdataSectionElements(Collection c)
- {
- cdataSectionElements = c;
- }
-
- public void serialize(final Node node, final OutputStream out)
- throws IOException
- {
- serialize(node, out, false);
- }
-
- void serialize(final Node node, final OutputStream out,
- boolean convertToCdata)
- throws IOException
- {
- if (out == null)
- {
- throw new NullPointerException("no output stream");
- }
- String value, prefix;
- Node children;
- Node next = node.getNextSibling();
- String uri = node.getNamespaceURI();
- boolean defined = false;
- short nt = node.getNodeType();
- if (convertToCdata && nt == Node.TEXT_NODE)
- {
- nt = Node.CDATA_SECTION_NODE;
- }
- switch (nt)
- {
- case Node.ATTRIBUTE_NODE:
- prefix = node.getPrefix();
- if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(uri) ||
- XMLConstants.XMLNS_ATTRIBUTE.equals(prefix) ||
- (prefix != null && prefix.startsWith("xmlns:")))
- {
- String nsuri = node.getNodeValue();
- if (isDefined(nsuri))
- {
- break;
- }
- define(nsuri, node.getLocalName());
- }
- else if (uri != null && !isDefined(uri))
- {
- prefix = define(uri, prefix);
- String nsname = (prefix == null) ? "xmlns" : "xmlns:" + prefix;
- out.write(SPACE);
- out.write(encodeText(nsname));
- out.write(EQ);
- String nsvalue = "'" + encode(uri, true, true) + "'";
- out.write(nsvalue.getBytes(encoding));
- defined = true;
- }
- out.write(SPACE);
- String a_nodeName = node.getNodeName();
- out.write(encodeText(a_nodeName));
- String a_nodeValue = node.getNodeValue();
- if (mode == Stylesheet.OUTPUT_HTML &&
- a_nodeName.equals(a_nodeValue))
- {
- break;
- }
- out.write(EQ);
- value = "'" + encode(a_nodeValue, true, true) + "'";
- out.write(encodeText(value));
- break;
- case Node.ELEMENT_NODE:
- value = node.getNodeName();
- out.write(BRA);
- out.write(encodeText(value));
- if (uri != null && !isDefined(uri))
- {
- prefix = define(uri, node.getPrefix());
- String nsname = (prefix == null) ? "xmlns" : "xmlns:" + prefix;
- out.write(SPACE);
- out.write(encodeText(nsname));
- out.write(EQ);
- String nsvalue = "'" + encode(uri, true, true) + "'";
- out.write(encodeText(nsvalue));
- defined = true;
- }
- NamedNodeMap attrs = node.getAttributes();
- if (attrs != null)
- {
- int len = attrs.getLength();
- for (int i = 0; i < len; i++)
- {
- Attr attr = (Attr) attrs.item(i);
- if (discardDefaultContent && !attr.getSpecified())
- {
- // NOOP
- }
- else
- {
- serialize(attr, out, false);
- }
- }
- }
- convertToCdata = cdataSectionElements.contains(value);
- children = node.getFirstChild();
- if (children == null)
- {
- out.write(SLASH);
- out.write(KET);
- }
- else
- {
- out.write(KET);
- serialize(children, out, convertToCdata);
- out.write(BRA);
- out.write(SLASH);
- out.write(encodeText(value));
- out.write(KET);
- }
- break;
- case Node.TEXT_NODE:
- value = node.getNodeValue();
- if (!"yes".equals(node.getUserData("disable-output-escaping")))
- {
- value = encode(value, false, false);
- }
- out.write(encodeText(value));
- break;
- case Node.CDATA_SECTION_NODE:
- value = "<![CDATA[" + node.getNodeValue() + "]]>";
- out.write(encodeText(value));
- break;
- case Node.COMMENT_NODE:
- value = "<!--" + node.getNodeValue() + "-->";
- out.write(encodeText(value));
- Node cp = node.getParentNode();
- if (cp != null && cp.getNodeType() == Node.DOCUMENT_NODE)
- {
- out.write(encodeText(eol));
- }
- break;
- case Node.DOCUMENT_NODE:
- case Node.DOCUMENT_FRAGMENT_NODE:
- if (mode == Stylesheet.OUTPUT_XML)
- {
- if ("UTF-16".equalsIgnoreCase(encoding))
- {
- out.write(0xfe);
- out.write(0xff);
- }
- if (!"yes".equals(node.getUserData("omit-xml-declaration")) &&
- xmlDeclaration)
- {
- Document doc = (node instanceof Document) ?
- (Document) node : null;
- String version = (doc != null) ? doc.getXmlVersion() : null;
- if (version == null)
- {
- version = (String) node.getUserData("version");
- }
- if (version == null)
- {
- version = "1.0";
- }
- out.write(BRA);
- out.write(0x3f);
- out.write("xml version='".getBytes("US-ASCII"));
- out.write(version.getBytes("US-ASCII"));
- out.write(APOS);
- if (!("UTF-8".equalsIgnoreCase(encoding)))
- {
- out.write(" encoding='".getBytes("US-ASCII"));
- out.write(encoding.getBytes("US-ASCII"));
- out.write(APOS);
- }
- if ((doc != null && doc.getXmlStandalone()) ||
- "yes".equals(node.getUserData("standalone")))
- {
- out.write(" standalone='yes'".getBytes("US-ASCII"));
- }
- out.write(0x3f);
- out.write(KET);
- out.write(encodeText(eol));
- }
- // TODO warn if not outputting the declaration would be a
- // problem
- }
- else if (mode == Stylesheet.OUTPUT_HTML)
- {
- // Ensure that encoding is accessible
- String mediaType = (String) node.getUserData("media-type");
- if (mediaType == null)
- {
- mediaType = "text/html";
- }
- String contentType = mediaType + "; charset=" +
- ((encoding.indexOf(' ') != -1) ?
- "\"" + encoding + "\"" :
- encoding);
- Document doc = (node instanceof Document) ? (Document) node :
- node.getOwnerDocument();
- Node html = null;
- for (Node ctx = node.getFirstChild(); ctx != null;
- ctx = ctx.getNextSibling())
- {
- if (ctx.getNodeType() == Node.ELEMENT_NODE)
- {
- html = ctx;
- break;
- }
- }
- if (html == null)
- {
- html = doc.createElement("html");
- node.appendChild(html);
- }
- Node head = null;
- for (Node ctx = html.getFirstChild(); ctx != null;
- ctx = ctx.getNextSibling())
- {
- if (ctx.getNodeType() == Node.ELEMENT_NODE &&
- "head".equalsIgnoreCase(ctx.getLocalName()))
- {
- head = ctx;
- break;
- }
- }
- if (head == null)
- {
- head = doc.createElement("head");
- Node c1 = null;
- for (Node ctx = html.getFirstChild(); ctx != null;
- ctx = ctx.getNextSibling())
- {
- if (ctx.getNodeType() == Node.ELEMENT_NODE)
- {
- c1 = ctx;
- break;
- }
- }
- if (c1 != null)
- {
- html.insertBefore(head, c1);
- }
- else
- {
- html.appendChild(head);
- }
- }
- Node meta = null;
- Node metaContent = null;
- for (Node ctx = head.getFirstChild(); ctx != null;
- ctx = ctx.getNextSibling())
- {
- if (ctx.getNodeType() == Node.ELEMENT_NODE &&
- "meta".equalsIgnoreCase(ctx.getLocalName()))
- {
- NamedNodeMap metaAttrs = ctx.getAttributes();
- int len = metaAttrs.getLength();
- String httpEquiv = null;
- Node content = null;
- for (int i = 0; i < len; i++)
- {
- Node attr = metaAttrs.item(i);
- String attrName = attr.getNodeName();
- if ("http-equiv".equalsIgnoreCase(attrName))
- {
- httpEquiv = attr.getNodeValue();
- }
- else if ("content".equalsIgnoreCase(attrName))
- {
- content = attr;
- }
- }
- if ("Content-Type".equalsIgnoreCase(httpEquiv))
- {
- meta = ctx;
- metaContent = content;
- break;
- }
- }
- }
- if (meta == null)
- {
- meta = doc.createElement("meta");
- // Insert first
- Node first = head.getFirstChild();
- if (first == null)
- {
- head.appendChild(meta);
- }
- else
- {
- head.insertBefore(meta, first);
- }
- Node metaHttpEquiv = doc.createAttribute("http-equiv");
- meta.getAttributes().setNamedItem(metaHttpEquiv);
- metaHttpEquiv.setNodeValue("Content-Type");
- }
- if (metaContent == null)
- {
- metaContent = doc.createAttribute("content");
- meta.getAttributes().setNamedItem(metaContent);
- }
- metaContent.setNodeValue(contentType);
- // phew
- }
- children = node.getFirstChild();
- if (children != null)
- {
- serialize(children, out, convertToCdata);
- }
- break;
- case Node.DOCUMENT_TYPE_NODE:
- DocumentType doctype = (DocumentType) node;
- out.write(BRA);
- out.write(BANG);
- value = doctype.getNodeName();
- out.write(encodeText(value));
- String publicId = doctype.getPublicId();
- if (publicId != null)
- {
- out.write(encodeText(" PUBLIC "));
- out.write(APOS);
- out.write(encodeText(publicId));
- out.write(APOS);
- }
- String systemId = doctype.getSystemId();
- if (systemId != null)
- {
- out.write(encodeText(" SYSTEM "));
- out.write(APOS);
- out.write(encodeText(systemId));
- out.write(APOS);
- }
- String internalSubset = doctype.getInternalSubset();
- if (internalSubset != null)
- {
- out.write(encodeText(internalSubset));
- }
- out.write(KET);
- out.write(eol.getBytes(encoding));
- break;
- case Node.ENTITY_REFERENCE_NODE:
- value = "&" + node.getNodeValue() + ";";
- out.write(encodeText(value));
- break;
- case Node.PROCESSING_INSTRUCTION_NODE:
- value = "<?" + node.getNodeName() + " " + node.getNodeValue() + "?>";
- out.write(encodeText(value));
- Node pp = node.getParentNode();
- if (pp != null && pp.getNodeType() == Node.DOCUMENT_NODE)
- {
- out.write(encodeText(eol));
- }
- break;
- }
- if (defined)
- {
- undefine(uri);
- }
- if (next != null)
- {
- serialize(next, out, convertToCdata);
- }
- }
-
- boolean isDefined(String uri)
- {
- return XMLConstants.XML_NS_URI.equals(uri) ||
- XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(uri) ||
- namespaces.containsKey(uri);
- }
-
- String define(String uri, String prefix)
- {
- while (namespaces.containsValue(prefix))
- {
- // Fabricate new prefix
- prefix = prefix + "_";
- }
- namespaces.put(uri, prefix);
- return prefix;
- }
-
- void undefine(String uri)
- {
- namespaces.remove(uri);
- }
-
- final byte[] encodeText(String text)
- throws UnsupportedEncodingException
- {
- if (compatibilityMode)
- {
- int len = text.length();
- StringBuffer buf = null;
- for (int i = 0; i < len; i++)
- {
- char c = text.charAt(i);
- if (c >= 127)
- {
- if (buf == null)
- {
- buf = new StringBuffer(text.substring(0, i));
- }
- buf.append('&');
- buf.append('#');
- buf.append((int) c);
- buf.append(';');
- }
- else if (buf != null)
- {
- buf.append(c);
- }
- }
- if (buf != null)
- {
- text = buf.toString();
- }
- }
- return text.getBytes(encoding);
- }
-
- String encode(String text, boolean encodeCtl, boolean inAttr)
- {
- int len = text.length();
- StringBuffer buf = null;
- for (int i = 0; i < len; i++)
- {
- char c = text.charAt(i);
- if (c == '<')
- {
- if (buf == null)
- {
- buf = new StringBuffer(text.substring(0, i));
- }
- buf.append("&lt;");
- }
- else if (c == '>')
- {
- if (buf == null)
- {
- buf = new StringBuffer(text.substring(0, i));
- }
- buf.append("&gt;");
- }
- else if (c == '&')
- {
- if (mode == Stylesheet.OUTPUT_HTML && (i + 1) < len &&
- text.charAt(i + 1) == '{')
- {
- if (buf != null)
- {
- buf.append(c);
- }
- }
- else
- {
- if (buf == null)
- {
- buf = new StringBuffer(text.substring(0, i));
- }
- buf.append("&amp;");
- }
- }
- else if (c == '\'' && inAttr)
- {
- if (buf == null)
- {
- buf = new StringBuffer(text.substring(0, i));
- }
- buf.append("&apos;");
- }
- else if (c == '"' && inAttr)
- {
- if (buf == null)
- {
- buf = new StringBuffer(text.substring(0, i));
- }
- buf.append("&quot;");
- }
- else if (encodeCtl)
- {
- if (c < 0x20)
- {
- if (buf == null)
- {
- buf = new StringBuffer(text.substring(0, i));
- }
- buf.append('&');
- buf.append('#');
- buf.append((int) c);
- buf.append(';');
- }
- else if (buf != null)
- {
- buf.append(c);
- }
- }
- else if (buf != null)
- {
- buf.append(c);
- }
- }
- return (buf == null) ? text : buf.toString();
- }
-
- String toString(Node node)
- {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- try
- {
- serialize(node, out);
- return new String(out.toByteArray(), encoding);
- }
- catch (IOException e)
- {
- throw new RuntimeException(e.getMessage());
- }
- }
-
-}
diff --git a/libjava/gnu/xml/transform/Stylesheet.java b/libjava/gnu/xml/transform/Stylesheet.java
deleted file mode 100644
index 5efd5ca3e3e..00000000000
--- a/libjava/gnu/xml/transform/Stylesheet.java
+++ /dev/null
@@ -1,1728 +0,0 @@
-/* Stylesheet.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.text.DecimalFormat;
-import java.text.DecimalFormatSymbols;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.TreeSet;
-import javax.xml.XMLConstants;
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.namespace.QName;
-import javax.xml.transform.Source;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionResolver;
-import javax.xml.xpath.XPathExpressionException;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.DOMException;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-import org.w3c.dom.UserDataHandler;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.NameTest;
-import gnu.xml.xpath.NodeTypeTest;
-import gnu.xml.xpath.Pattern;
-import gnu.xml.xpath.Selector;
-import gnu.xml.xpath.Root;
-import gnu.xml.xpath.Test;
-import gnu.xml.xpath.XPathImpl;
-
-/**
- * An XSL stylesheet.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class Stylesheet
- implements NamespaceContext, XPathFunctionResolver, UserDataHandler, Cloneable
-{
-
- static final String XSL_NS = "http://www.w3.org/1999/XSL/Transform";
-
- static final int OUTPUT_XML = 0;
- static final int OUTPUT_HTML = 1;
- static final int OUTPUT_TEXT = 2;
-
- final TransformerFactoryImpl factory;
- TransformerImpl transformer;
- Stylesheet parent;
- final XPathImpl xpath;
- final String systemId;
- final int precedence;
-
- final boolean debug;
-
- /**
- * Version of XSLT.
- */
- String version;
-
- Collection extensionElementPrefixes;
- Collection excludeResultPrefixes;
-
- /**
- * Set of element names for which we should strip whitespace.
- */
- Set stripSpace;
-
- /**
- * Set of element names for which we should preserve whitespace.
- */
- Set preserveSpace;
-
- /**
- * Output options.
- */
- int outputMethod;
- String outputVersion;
- String outputEncoding;
- boolean outputOmitXmlDeclaration;
- boolean outputStandalone;
- String outputPublicId;
- String outputSystemId;
- Collection outputCdataSectionElements;
- boolean outputIndent;
- String outputMediaType;
-
- /**
- * Keys.
- */
- Collection keys;
-
- /**
- * Decimal formats.
- */
- Map decimalFormats;
-
- /**
- * Namespace aliases.
- */
- Map namespaceAliases;
-
- /**
- * Attribute-sets.
- */
- List attributeSets;
-
- /**
- * Variables.
- */
- List variables;
-
- /**
- * Variable and parameter bindings.
- */
- Bindings bindings;
-
- /**
- * Templates.
- */
- LinkedList templates;
-
- TemplateNode builtInNodeTemplate;
- TemplateNode builtInTextTemplate;
-
- /**
- * Holds the current node while parsing.
- * Necessary to associate the document function with its declaring node,
- * to resolve namespaces, and to maintain the current node for the
- * current() function.
- */
- Node current;
-
- /**
- * Set by a terminating message.
- */
- transient boolean terminated;
-
- /**
- * Current template in force.
- */
- transient Template currentTemplate;
-
- Stylesheet(TransformerFactoryImpl factory,
- Stylesheet parent,
- Document doc,
- String systemId,
- int precedence)
- throws TransformerConfigurationException
- {
- this.factory = factory;
- this.systemId = systemId;
- this.precedence = precedence;
- this.parent = parent;
- extensionElementPrefixes = new HashSet();
- excludeResultPrefixes = new HashSet();
- stripSpace = new LinkedHashSet();
- preserveSpace = new LinkedHashSet();
- outputCdataSectionElements = new LinkedHashSet();
- xpath = (XPathImpl) factory.xpathFactory.newXPath();
- if (parent == null)
- {
- bindings = new Bindings(this);
- attributeSets = new LinkedList();
- variables = new LinkedList();
- namespaceAliases = new LinkedHashMap();
- templates = new LinkedList();
- keys = new LinkedList();
- decimalFormats = new LinkedHashMap();
- initDefaultDecimalFormat();
- xpath.setNamespaceContext(this);
- xpath.setXPathFunctionResolver(this);
- }
- else
- {
- /* Test for import circularity */
- for (Stylesheet ctx = this; ctx.parent != null; ctx = ctx.parent)
- {
- if (systemId != null && systemId.equals(ctx.parent.systemId))
- {
- String msg = "circularity importing " + systemId;
- throw new TransformerConfigurationException(msg);
- }
- }
- /* OK */
- Stylesheet root = getRootStylesheet();
- bindings = root.bindings;
- attributeSets = root.attributeSets;
- variables = root.variables;
- namespaceAliases = root.namespaceAliases;
- templates = root.templates;
- keys = root.keys;
- decimalFormats = root.decimalFormats;
- xpath.setNamespaceContext(root);
- xpath.setXPathFunctionResolver(root);
- }
- xpath.setXPathVariableResolver(bindings);
-
- Test anyNode = new NodeTypeTest((short) 0);
- List tests = Collections.singletonList(anyNode);
- builtInNodeTemplate =
- new ApplyTemplatesNode(null, null,
- new Selector(Selector.CHILD, tests),
- null, null, null, true);
- builtInTextTemplate =
- new ValueOfNode(null, null,
- new Selector(Selector.SELF, tests),
- false);
-
- parse(doc.getDocumentElement(), true);
- current = doc; // Alow namespace resolution during processing
-
- debug = ("yes".equals(System.getProperty("xsl.debug")));
-
- if (debug)
- {
- System.err.println("Stylesheet: " + doc.getDocumentURI());
- for (Iterator i = templates.iterator(); i.hasNext(); )
- {
- Template t = (Template) i.next();
- t.list(System.err);
- System.err.println("--------------------");
- }
- }
- }
-
- Stylesheet getRootStylesheet()
- {
- Stylesheet stylesheet = this;
- while (stylesheet.parent != null)
- {
- stylesheet = stylesheet.parent;
- }
- return stylesheet;
- }
-
- void initDefaultDecimalFormat()
- {
- DecimalFormat defaultDecimalFormat = new DecimalFormat();
- DecimalFormatSymbols symbols = new DecimalFormatSymbols();
- symbols.setDecimalSeparator('.');
- symbols.setGroupingSeparator(',');
- symbols.setPercent('%');
- symbols.setPerMill('\u2030');
- symbols.setZeroDigit('0');
- symbols.setDigit('#');
- symbols.setPatternSeparator(';');
- symbols.setInfinity("Infinity");
- symbols.setNaN("NaN");
- symbols.setMinusSign('-');
- defaultDecimalFormat.setDecimalFormatSymbols(symbols);
- decimalFormats.put(null, defaultDecimalFormat);
- }
-
- // -- Cloneable --
-
- public Object clone()
- {
- try
- {
- Stylesheet clone = (Stylesheet) super.clone();
- clone.bindings = (Bindings) bindings.clone();
-
- LinkedList templates2 = new LinkedList();
- for (Iterator i = templates.iterator(); i.hasNext(); )
- {
- Template t = (Template) i.next();
- templates2.add(t.clone(clone));
- }
- clone.templates = templates2;
-
- LinkedList attributeSets2 = new LinkedList();
- for (Iterator i = attributeSets.iterator(); i.hasNext(); )
- {
- AttributeSet as = (AttributeSet) i.next();
- attributeSets2.add(as.clone(clone));
- }
- clone.attributeSets = attributeSets2;
-
- LinkedList variables2 = new LinkedList();
- for (Iterator i = variables.iterator(); i.hasNext(); )
- {
- ParameterNode var = (ParameterNode) i.next();
- variables2.add(var.clone(clone));
- }
- clone.variables = variables2;
-
- LinkedList keys2 = new LinkedList();
- for (Iterator i = keys.iterator(); i.hasNext(); )
- {
- Key k = (Key) i.next();
- keys2.add(k.clone(clone));
- }
- clone.keys = keys2;
-
- return clone;
- }
- catch (CloneNotSupportedException e)
- {
- throw new Error(e.getMessage());
- }
- }
-
- // -- Variable evaluation --
-
- void initTopLevelVariables(Node context)
- throws TransformerException
- {
- for (Iterator i = variables.iterator(); i.hasNext(); )
- {
- ParameterNode var = (ParameterNode) i.next();
- bindings.set(var.name,
- var.getValue(this, null, context, 1, 1),
- var.global);
- }
- }
-
- // -- NamespaceContext --
-
- public String getNamespaceURI(String prefix)
- {
- return (current == null) ? null : current.lookupNamespaceURI(prefix);
- }
-
- public String getPrefix(String namespaceURI)
- {
- return (current == null) ? null : current.lookupPrefix(namespaceURI);
- }
-
- public Iterator getPrefixes(String namespaceURI)
- {
- // TODO
- return Collections.singleton(getPrefix(namespaceURI)).iterator();
- }
-
- // -- Template selection --
-
- TemplateNode getTemplate(QName mode, Node context, boolean applyImports)
- throws TransformerException
- {
- //System.err.println("getTemplate: mode="+mode+" context="+context);
- Set candidates = new TreeSet();
- for (Iterator j = templates.iterator(); j.hasNext(); )
- {
- Template t = (Template) j.next();
- boolean isMatch = t.matches(mode, context);
- if (applyImports)
- {
- if (currentTemplate == null)
- {
- String msg = "current template may not be null " +
- "during apply-imports";
- throw new TransformerException(msg);
- }
- if (!currentTemplate.imports(t))
- {
- isMatch = false;
- }
- }
- //System.err.println("\t"+context+" "+t+"="+isMatch);
- if (isMatch)
- {
- candidates.add(t);
- }
- }
- //System.err.println("\tcandidates="+candidates);
- if (candidates.isEmpty())
- {
- // Apply built-in template
- // Current template is unchanged
- //System.err.println("\tbuiltInTemplate context="+context);
- switch (context.getNodeType())
- {
- case Node.ELEMENT_NODE:
- case Node.DOCUMENT_NODE:
- case Node.DOCUMENT_FRAGMENT_NODE:
- case Node.PROCESSING_INSTRUCTION_NODE:
- case Node.COMMENT_NODE:
- return builtInNodeTemplate;
- case Node.TEXT_NODE:
- case Node.ATTRIBUTE_NODE:
- return builtInTextTemplate;
- default:
- return null;
- }
- }
- else
- {
- Template t = (Template) candidates.iterator().next();
- // Set current template
- currentTemplate = t;
- //System.err.println("\ttemplate="+t+" context="+context);
- return t.node;
- }
- }
-
- TemplateNode getTemplate(QName mode, QName name)
- throws TransformerException
- {
- //System.err.println("getTemplate: mode="+mode+" name="+name);
- Set candidates = new TreeSet();
- for (Iterator j = templates.iterator(); j.hasNext(); )
- {
- Template t = (Template) j.next();
- boolean isMatch = t.matches(name);
- //System.err.println("\t"+name+" "+t+"="+isMatch);
- if (isMatch)
- {
- candidates.add(t);
- }
- }
- if (candidates.isEmpty())
- {
- return null;
- //throw new TransformerException("template '" + name + "' not found");
- }
- Template t = (Template) candidates.iterator().next();
- //System.err.println("\ttemplate="+t+" context="+context);
- return t.node;
- }
-
- /**
- * template
- */
- final Template parseTemplate(Node node, NamedNodeMap attrs)
- throws TransformerConfigurationException, XPathExpressionException
- {
- String n = getAttribute(attrs, "name");
- QName name = (n == null) ? null : getQName(n);
- String m = getAttribute(attrs, "match");
- Pattern match = null;
- if (m != null)
- {
- try
- {
- match = (Pattern) xpath.compile(m);
- }
- catch (ClassCastException e)
- {
- String msg = "illegal pattern: " + m;
- throw new TransformerConfigurationException(msg);
- }
- }
- String p = getAttribute(attrs, "priority");
- String mm = getAttribute(attrs, "mode");
- QName mode = (mm == null) ? null : getQName(mm);
- double priority = (p == null) ? Template.DEFAULT_PRIORITY :
- Double.parseDouble(p);
- return new Template(this, name, match, parse(node.getFirstChild()),
- precedence, priority, mode);
- }
-
- /**
- * output
- */
- final void parseOutput(Node node, NamedNodeMap attrs)
- throws TransformerConfigurationException
- {
- String method = getAttribute(attrs, "method");
- if ("xml".equals(method) || method == null)
- {
- outputMethod = OUTPUT_XML;
- }
- else if ("html".equals(method))
- {
- outputMethod = OUTPUT_HTML;
- }
- else if ("text".equals(method))
- {
- outputMethod = OUTPUT_TEXT;
- }
- else
- {
- String msg = "unsupported output method: " + method;
- DOMSourceLocator l = new DOMSourceLocator(node);
- throw new TransformerConfigurationException(msg, l);
- }
- outputPublicId = getAttribute(attrs, "public-id");
- outputSystemId = getAttribute(attrs, "system-id");
- outputEncoding = getAttribute(attrs, "encoding");
- String indent = getAttribute(attrs, "indent");
- if (indent != null)
- {
- outputIndent = "yes".equals(indent);
- }
- outputVersion = getAttribute(attrs, "version");
- String omitXmlDecl = getAttribute(attrs, "omit-xml-declaration");
- if (omitXmlDecl != null)
- {
- outputOmitXmlDeclaration = "yes".equals(omitXmlDecl);
- }
- String standalone = getAttribute(attrs, "standalone");
- if (standalone != null)
- {
- outputStandalone = "yes".equals(standalone);
- }
- outputMediaType = getAttribute(attrs, "media-type");
- String cdataSectionElements =
- getAttribute(attrs, "cdata-section-elements");
- if (cdataSectionElements != null)
- {
- StringTokenizer st = new StringTokenizer(cdataSectionElements, " ");
- while (st.hasMoreTokens())
- {
- outputCdataSectionElements.add(st.nextToken());
- }
- }
- }
-
- /**
- * key
- */
- final void parseKey(Node node, NamedNodeMap attrs)
- throws TransformerConfigurationException, XPathExpressionException
- {
- String n = getRequiredAttribute(attrs, "name", node);
- String m = getRequiredAttribute(attrs, "match", node);
- String u = getRequiredAttribute(attrs, "use", node);
- QName name = getQName(n);
- Expr use = (Expr) xpath.compile(u);
- try
- {
- Pattern match = (Pattern) xpath.compile(m);
- Key key = new Key(name, match, use);
- keys.add(key);
- }
- catch (ClassCastException e)
- {
- throw new TransformerConfigurationException("invalid pattern: " + m);
- }
- }
-
- /**
- * decimal-format
- */
- final void parseDecimalFormat(Node node, NamedNodeMap attrs)
- throws TransformerConfigurationException
- {
- String dfName = getAttribute(attrs, "name");
- DecimalFormat df = new DecimalFormat();
- DecimalFormatSymbols symbols = new DecimalFormatSymbols();
- symbols.setDecimalSeparator(parseDFChar(attrs, "decimal-separator", '.'));
- symbols.setGroupingSeparator(parseDFChar(attrs, "grouping-separator", ','));
- symbols.setInfinity(parseDFString(attrs, "infinity", "Infinity"));
- symbols.setMinusSign(parseDFChar(attrs, "minus-sign", '-'));
- symbols.setNaN(parseDFString(attrs, "NaN", "NaN"));
- symbols.setPercent(parseDFChar(attrs, "percent", '%'));
- symbols.setPerMill(parseDFChar(attrs, "per-mille", '\u2030'));
- symbols.setZeroDigit(parseDFChar(attrs, "zero-digit", '0'));
- symbols.setDigit(parseDFChar(attrs, "digit", '#'));
- symbols.setPatternSeparator(parseDFChar(attrs, "pattern-separator", ';'));
- df.setDecimalFormatSymbols(symbols);
- decimalFormats.put(dfName, df);
- }
-
- private final char parseDFChar(NamedNodeMap attrs, String name, char def)
- throws TransformerConfigurationException
- {
- Node attr = attrs.getNamedItem(name);
- try
- {
- return (attr == null) ? def : attr.getNodeValue().charAt(0);
- }
- catch (StringIndexOutOfBoundsException e)
- {
- throw new TransformerConfigurationException("empty attribute '" +
- name +
- "' in decimal-format", e);
- }
- }
-
- private final String parseDFString(NamedNodeMap attrs, String name,
- String def)
- {
- Node attr = attrs.getNamedItem(name);
- return (attr == null) ? def : attr.getNodeValue();
- }
-
- /**
- * namespace-alias
- */
- final void parseNamespaceAlias(Node node, NamedNodeMap attrs)
- throws TransformerConfigurationException
- {
- String sp = getRequiredAttribute(attrs, "stylesheet-prefix", node);
- String rp = getRequiredAttribute(attrs, "result-prefix", node);
- namespaceAliases.put(sp, rp);
- }
-
- /**
- * attribute-set
- */
- final void parseAttributeSet(Node node, NamedNodeMap attrs)
- throws TransformerConfigurationException, XPathExpressionException
- {
- TemplateNode children = parse(node.getFirstChild());
- String name = getRequiredAttribute(attrs, "name", node);
- String uas = getAttribute(attrs, "use-attribute-sets");
- attributeSets.add(new AttributeSet(children, name, uas));
- }
-
- /**
- * Parse top-level elements.
- */
- void parse(Node node, boolean root)
- throws TransformerConfigurationException
- {
- if (node == null)
- {
- return;
- }
- current = node;
- try
- {
- String namespaceUri = node.getNamespaceURI();
- if (XSL_NS.equals(namespaceUri) &&
- node.getNodeType() == Node.ELEMENT_NODE)
- {
- String name = node.getLocalName();
- NamedNodeMap attrs = node.getAttributes();
- if ("stylesheet".equals(name))
- {
- version = getAttribute(attrs, "version");
- String eep = getAttribute(attrs, "extension-element-prefixes");
- if (eep != null)
- {
- StringTokenizer st = new StringTokenizer(eep);
- while (st.hasMoreTokens())
- {
- extensionElementPrefixes.add(st.nextToken());
- }
- }
- String erp = getAttribute(attrs, "exclude-result-prefixes");
- if (erp != null)
- {
- StringTokenizer st = new StringTokenizer(erp);
- while (st.hasMoreTokens())
- {
- excludeResultPrefixes.add(st.nextToken());
- }
- }
- parse(node.getFirstChild(), false);
- return;
- }
- else if ("template".equals(name))
- {
- templates.addFirst(parseTemplate(node, attrs));
- }
- else if ("param".equals(name) ||
- "variable".equals(name))
- {
- boolean global = "variable".equals(name);
- TemplateNode content = parse(node.getFirstChild());
- String paramName = getRequiredAttribute(attrs, "name", node);
- String select = getAttribute(attrs, "select");
- if (select != null && select.length() > 0)
- {
- if (content != null)
- {
- String msg = "parameter '" + paramName +
- "' has both select and content";
- DOMSourceLocator l = new DOMSourceLocator(node);
- throw new TransformerConfigurationException(msg, l);
- }
- Expr expr = (Expr) xpath.compile(select);
- variables.add(new ParameterNode(null, null,
- paramName,
- expr, global));
- }
- else
- {
- variables.add(new ParameterNode(content, null,
- paramName,
- null, global));
- }
- bindings.set(paramName, content, global);
- }
- else if ("include".equals(name) || "import".equals(name))
- {
- int delta = "import".equals(name) ? -1 : 0;
- String href = getRequiredAttribute(attrs, "href", node);
- Source source;
- synchronized (factory.resolver)
- {
- if (transformer != null)
- {
- factory.resolver
- .setUserResolver(transformer.getURIResolver());
- factory.resolver
- .setUserListener(transformer.getErrorListener());
- }
- source = factory.resolver.resolve(systemId, href);
- }
- factory.newStylesheet(source, precedence + delta, this);
- }
- else if ("output".equals(name))
- {
- parseOutput(node, attrs);
- }
- else if ("preserve-space".equals(name))
- {
- String elements =
- getRequiredAttribute(attrs, "elements", node);
- StringTokenizer st = new StringTokenizer(elements,
- " \t\n\r");
- while (st.hasMoreTokens())
- {
- preserveSpace.add(parseNameTest(st.nextToken()));
- }
- }
- else if ("strip-space".equals(name))
- {
- String elements =
- getRequiredAttribute(attrs, "elements", node);
- StringTokenizer st = new StringTokenizer(elements,
- " \t\n\r");
- while (st.hasMoreTokens())
- {
- stripSpace.add(parseNameTest(st.nextToken()));
- }
- }
- else if ("key".equals(name))
- {
- parseKey(node, attrs);
- }
- else if ("decimal-format".equals(name))
- {
- parseDecimalFormat(node, attrs);
- }
- else if ("namespace-alias".equals(name))
- {
- parseNamespaceAlias(node, attrs);
- }
- else if ("attribute-set".equals(name))
- {
- parseAttributeSet(node, attrs);
- }
- parse(node.getNextSibling(), false);
- }
- else if (root)
- {
- // Literal document element
- Attr versionNode =
- ((Element)node).getAttributeNodeNS(XSL_NS, "version");
- if (versionNode == null)
- {
- String msg = "no xsl:version attribute on literal result node";
- DOMSourceLocator l = new DOMSourceLocator(node);
- throw new TransformerConfigurationException(msg, l);
- }
- version = versionNode.getValue();
- Node rootClone = node.cloneNode(true);
- NamedNodeMap attrs = rootClone.getAttributes();
- attrs.removeNamedItemNS(XSL_NS, "version");
- templates.add(new Template(this, null, new Root(),
- parse(rootClone),
- precedence,
- Template.DEFAULT_PRIORITY,
- null));
- }
- else
- {
- // Skip unknown elements, text, comments, etc
- parse(node.getNextSibling(), false);
- }
- }
- catch (TransformerException e)
- {
- DOMSourceLocator l = new DOMSourceLocator(node);
- throw new TransformerConfigurationException(e.getMessage(), l, e);
- }
- catch (DOMException e)
- {
- DOMSourceLocator l = new DOMSourceLocator(node);
- throw new TransformerConfigurationException(e.getMessage(), l, e);
- }
- catch (XPathExpressionException e)
- {
- DOMSourceLocator l = new DOMSourceLocator(node);
- throw new TransformerConfigurationException(e.getMessage(), l, e);
- }
- }
-
- final NameTest parseNameTest(String token)
- {
- if ("*".equals(token))
- {
- return new NameTest(null, true, true);
- }
- else if (token.endsWith(":*"))
- {
- QName qName = getQName(token.substring(0, token.length() - 2));
- return new NameTest(qName, true, false);
- }
- else
- {
- QName qName = getQName(token);
- return new NameTest(qName, false, false);
- }
- }
-
- final QName getQName(String name)
- {
- QName qName = QName.valueOf(name);
- String prefix = qName.getPrefix();
- String uri = qName.getNamespaceURI();
- if (prefix != null && (uri == null || uri.length() == 0))
- {
- uri = getNamespaceURI(prefix);
- String localName = qName.getLocalPart();
- qName = new QName(uri, localName, prefix);
- }
- return qName;
- }
-
- final TemplateNode parseAttributeValueTemplate(String value, Node source)
- throws TransformerConfigurationException, XPathExpressionException
- {
- current = source;
- // Tokenize
- int len = value.length();
- int off = 0;
- List tokens = new ArrayList(); // text tokens
- List types = new ArrayList(); // literal or expression
- int depth = 0;
- for (int i = 0; i < len; i++)
- {
- char c = value.charAt(i);
- if (c == '{')
- {
- if (i < (len - 1) && value.charAt(i + 1) == '{')
- {
- tokens.add(value.substring(off, i + 1));
- types.add(Boolean.FALSE);
- i++;
- off = i + 1;
- continue;
- }
- if (depth == 0)
- {
- if (i - off > 0)
- {
- tokens.add(value.substring(off, i));
- types.add(Boolean.FALSE);
- }
- off = i + 1;
- }
- depth++;
- }
- else if (c == '}')
- {
- if (i < (len - 1) && value.charAt(i + 1) == '}')
- {
- tokens.add(value.substring(off, i + 1));
- types.add(Boolean.FALSE);
- i++;
- off = i + 1;
- continue;
- }
- if (depth == 1)
- {
- if (i - off > 0)
- {
- tokens.add(value.substring(off, i));
- types.add(Boolean.TRUE);
- }
- else
- {
- String msg = "attribute value template " +
- "must contain expression: " + value;
- DOMSourceLocator l = new DOMSourceLocator(source);
- throw new TransformerConfigurationException(msg, l);
- }
- off = i + 1;
- }
- depth--;
- }
- }
- if (depth > 0)
- {
- String msg = "invalid attribute value template: " + value;
- throw new TransformerConfigurationException(msg);
- }
- if (len - off > 0)
- {
- // Trailing text
- tokens.add(value.substring(off));
- types.add(Boolean.FALSE);
- }
-
- // Construct template node tree
- TemplateNode ret = null;
- Document doc = source.getOwnerDocument();
- len = tokens.size();
- for (int i = len - 1; i >= 0; i--)
- {
- String token = (String) tokens.get(i);
- Boolean type = (Boolean) types.get(i);
- if (type == Boolean.TRUE)
- {
- // Expression text
- Expr select = (Expr) xpath.compile(token);
- ret = new ValueOfNode(null, ret, select, false);
- }
- else
- {
- // Verbatim text
- ret = new LiteralNode(null, ret, doc.createTextNode(token));
- }
- }
- return ret;
- }
-
- boolean isPreserved(Text text)
- throws TransformerConfigurationException
- {
- // Check characters in text
- String value = text.getData();
- if (value != null)
- {
- int len = value.length();
- for (int i = 0; i < len; i++)
- {
- char c = value.charAt(i);
- if (c != 0x20 && c != 0x09 && c != 0x0a && c != 0x0d)
- {
- return true;
- }
- }
- }
- // Check parent node
- Node ctx = text.getParentNode();
- if (!preserveSpace.isEmpty())
- {
- for (Iterator i = preserveSpace.iterator(); i.hasNext(); )
- {
- NameTest preserveTest = (NameTest) i.next();
- if (preserveTest.matches(ctx, 1, 1))
- {
- boolean override = false;
- if (!stripSpace.isEmpty())
- {
- for (Iterator j = stripSpace.iterator(); j.hasNext(); )
- {
- NameTest stripTest = (NameTest) j.next();
- if (stripTest.matches(ctx, 1, 1))
- {
- override = true;
- break;
- }
- }
- }
- if (!override)
- {
- return true;
- }
- }
- }
- }
- // Check whether any ancestor specified xml:space
- while (ctx != null)
- {
- if (ctx.getNodeType() == Node.ELEMENT_NODE)
- {
- Element element = (Element) ctx;
- String xmlSpace = element.getAttribute("xml:space");
- if ("default".equals(xmlSpace))
- {
- break;
- }
- else if ("preserve".equals(xmlSpace))
- {
- return true;
- }
- else if (xmlSpace.length() > 0)
- {
- String msg = "Illegal value for xml:space: " + xmlSpace;
- throw new TransformerConfigurationException(msg);
- }
- else if ("text".equals(ctx.getLocalName()) &&
- XSL_NS.equals(ctx.getNamespaceURI()))
- {
- // xsl:text implies xml:space='preserve'
- return true;
- }
- }
- ctx = ctx.getParentNode();
- }
- return false;
- }
-
- public XPathFunction resolveFunction(QName name, int arity)
- {
- String uri = name.getNamespaceURI();
- if (XSL_NS.equals(uri) || uri == null || uri.length() == 0)
- {
- String localName = name.getLocalPart();
- if ("document".equals(localName) && (arity == 1 || arity == 2))
- {
- if (current == null)
- {
- throw new RuntimeException("current is null");
- }
- return new DocumentFunction(getRootStylesheet(), current);
- }
- else if ("key".equals(localName) && (arity == 2))
- {
- return new KeyFunction(getRootStylesheet());
- }
- else if ("format-number".equals(localName) &&
- (arity == 2 || arity == 3))
- {
- return new FormatNumberFunction(getRootStylesheet());
- }
- else if ("current".equals(localName) && (arity == 0))
- {
- return new CurrentFunction(getRootStylesheet());
- }
- else if ("unparsed-entity-uri".equals(localName) && (arity == 1))
- {
- return new UnparsedEntityUriFunction();
- }
- else if ("generate-id".equals(localName) &&
- (arity == 1 || arity == 0))
- {
- return new GenerateIdFunction();
- }
- else if ("system-property".equals(localName) && (arity == 1))
- {
- return new SystemPropertyFunction();
- }
- else if ("element-available".equals(localName) && (arity == 1))
- {
- return new ElementAvailableFunction(this);
- }
- else if ("function-available".equals(localName) && (arity == 1))
- {
- return new FunctionAvailableFunction(this);
- }
- }
- return null;
- }
-
- // -- Parsing --
-
- /**
- * apply-templates
- */
- final TemplateNode parseApplyTemplates(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String m = getAttribute(attrs, "mode");
- QName mode = (m == null) ? null : getQName(m);
- String s = getAttribute(attrs, "select");
- if (s == null)
- {
- s = "child::node()";
- }
- List sortKeys = parseSortKeys(children);
- List withParams = parseWithParams(children);
- Expr select = (Expr) xpath.compile(s);
- return new ApplyTemplatesNode(null, parse(next),
- select, mode,
- sortKeys, withParams, false);
- }
-
- /**
- * call-template
- */
- final TemplateNode parseCallTemplate(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String n = getRequiredAttribute(attrs, "name", node);
- QName name = getQName(n);
- List withParams = parseWithParams(children);
- return new CallTemplateNode(null, parse(next), name,
- withParams);
- }
-
- /**
- * value-of
- */
- final TemplateNode parseValueOf(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String s = getRequiredAttribute(attrs, "select", node);
- String doe = getAttribute(attrs, "disable-output-escaping");
- boolean d = "yes".equals(doe);
- Expr select = (Expr) xpath.compile(s);
- return new ValueOfNode(null, parse(next), select, d);
- }
-
- /**
- * for-each
- */
- final TemplateNode parseForEach(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String s = getRequiredAttribute(attrs, "select", node);
- List sortKeys = parseSortKeys(children);
- Expr select = (Expr) xpath.compile(s);
- return new ForEachNode(parse(children), parse(next), select, sortKeys);
- }
-
- /**
- * if
- */
- final TemplateNode parseIf(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String t = getRequiredAttribute(attrs, "test", node);
- Expr test = (Expr) xpath.compile(t);
- return new IfNode(parse(children), parse(next), test);
- }
-
- /**
- * when
- */
- final TemplateNode parseWhen(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String t = getRequiredAttribute(attrs, "test", node);
- Expr test = (Expr) xpath.compile(t);
- return new WhenNode(parse(children), parse(next), test);
- }
-
- /**
- * element
- */
- final TemplateNode parseElement(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String name = getRequiredAttribute(attrs, "name", node);
- String namespace = getAttribute(attrs, "namespace");
- String uas = getAttribute(attrs, "use-attribute-sets");
- TemplateNode n = parseAttributeValueTemplate(name, node);
- TemplateNode ns = (namespace == null) ? null :
- parseAttributeValueTemplate(namespace, node);
- return new ElementNode(parse(children), parse(next), n, ns, uas, node);
- }
-
- /**
- * attribute
- */
- final TemplateNode parseAttribute(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String name = getRequiredAttribute(attrs, "name", node);
- String namespace = getAttribute(attrs, "namespace");
- TemplateNode n = parseAttributeValueTemplate(name, node);
- TemplateNode ns = (namespace == null) ? null :
- parseAttributeValueTemplate(namespace, node);
- return new AttributeNode(parse(children), parse(next), n, ns, node);
- }
-
- /**
- * text
- */
- final TemplateNode parseText(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String doe = getAttribute(attrs, "disable-output-escaping");
- boolean d = "yes".equals(doe);
- return new TextNode(parse(children), parse(next), d);
- }
-
- /**
- * copy
- */
- final TemplateNode parseCopy(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String uas = getAttribute(attrs, "use-attribute-sets");
- return new CopyNode(parse(children), parse(next), uas);
- }
-
- /**
- * processing-instruction
- */
- final TemplateNode parseProcessingInstruction(Node node, Node children,
- Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String name = getRequiredAttribute(attrs, "name", node);
- return new ProcessingInstructionNode(parse(children),
- parse(next), name);
- }
-
- /**
- * number
- */
- final TemplateNode parseNumber(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String v = getAttribute(attrs, "value");
- String ff = getAttribute(attrs, "format");
- if (ff == null)
- {
- ff = "1";
- }
- TemplateNode format = parseAttributeValueTemplate(ff, node);
- String lang = getAttribute(attrs, "lang");
- String lv = getAttribute(attrs, "letter-value");
- int letterValue = "traditional".equals(lv) ?
- AbstractNumberNode.TRADITIONAL :
- AbstractNumberNode.ALPHABETIC;
- String gs = getAttribute(attrs, "grouping-separator");
- String gz = getAttribute(attrs, "grouping-size");
- int gz2 = (gz != null && gz.length() > 0) ?
- Integer.parseInt(gz) : 1;
- if (v != null && v.length() > 0)
- {
- Expr value = (Expr) xpath.compile(v);
- return new NumberNode(parse(children), parse(next),
- value, format, lang,
- letterValue, gs, gz2);
- }
- else
- {
- String l = getAttribute(attrs, "level");
- int level =
- "multiple".equals(l) ? NodeNumberNode.MULTIPLE :
- "any".equals(l) ? NodeNumberNode.ANY :
- NodeNumberNode.SINGLE;
- String c = getAttribute(attrs, "count");
- String f = getAttribute(attrs, "from");
- Pattern count = null;
- Pattern from = null;
- if (c != null)
- {
- try
- {
- count = (Pattern) xpath.compile(c);
- }
- catch (ClassCastException e)
- {
- String msg = "invalid pattern: " + c;
- throw new TransformerConfigurationException(msg);
- }
- }
- if (f != null)
- {
- try
- {
- from = (Pattern) xpath.compile(f);
- }
- catch (ClassCastException e)
- {
- String msg = "invalid pattern: " + f;
- throw new TransformerConfigurationException(msg);
- }
- }
- return new NodeNumberNode(parse(children), parse(next),
- level, count, from,
- format, lang,
- letterValue, gs, gz2);
- }
- }
-
- /**
- * copy-of
- */
- final TemplateNode parseCopyOf(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String s = getRequiredAttribute(attrs, "select", node);
- Expr select = (Expr) xpath.compile(s);
- return new CopyOfNode(parse(children), parse(next), select);
- }
-
- /**
- * message
- */
- final TemplateNode parseMessage(Node node, Node children, Node next)
- throws TransformerConfigurationException, XPathExpressionException
- {
- NamedNodeMap attrs = node.getAttributes();
- String t = getAttribute(attrs, "terminate");
- boolean terminate = "yes".equals(t);
- return new MessageNode(parse(children), parse(next), terminate);
- }
-
- /**
- * Parse template-level elements.
- */
- final TemplateNode parse(Node node)
- throws TransformerConfigurationException
- {
- if (node == null)
- {
- return null;
- }
- // Hack to associate the document function with its declaring node
- current = node;
- Node children = node.getFirstChild();
- Node next = node.getNextSibling();
- try
- {
- String namespaceUri = node.getNamespaceURI();
- if (Stylesheet.XSL_NS.equals(namespaceUri) &&
- Node.ELEMENT_NODE == node.getNodeType())
- {
- String name = node.getLocalName();
- if ("apply-templates".equals(name))
- {
- return parseApplyTemplates(node, children, next);
- }
- else if ("call-template".equals(name))
- {
- return parseCallTemplate(node, children, next);
- }
- else if ("value-of".equals(name))
- {
- return parseValueOf(node, children, next);
- }
- else if ("for-each".equals(name))
- {
- return parseForEach(node, children, next);
- }
- else if ("if".equals(name))
- {
- return parseIf(node, children, next);
- }
- else if ("choose".equals(name))
- {
- return new ChooseNode(parse(children), parse(next));
- }
- else if ("when".equals(name))
- {
- return parseWhen(node, children, next);
- }
- else if ("otherwise".equals(name))
- {
- return new OtherwiseNode(parse(children), parse(next));
- }
- else if ("element".equals(name))
- {
- return parseElement(node, children, next);
- }
- else if ("attribute".equals(name))
- {
- return parseAttribute(node, children, next);
- }
- else if ("text".equals(name))
- {
- return parseText(node, children, next);
- }
- else if ("copy".equals(name))
- {
- return parseCopy(node, children, next);
- }
- else if ("processing-instruction".equals(name))
- {
- return parseProcessingInstruction(node, children, next);
- }
- else if ("comment".equals(name))
- {
- return new CommentNode(parse(children), parse(next));
- }
- else if ("number".equals(name))
- {
- return parseNumber(node, children, next);
- }
- else if ("param".equals(name) ||
- "variable".equals(name))
- {
- boolean global = "variable".equals(name);
- NamedNodeMap attrs = node.getAttributes();
- TemplateNode content = parse(children);
- String paramName = getRequiredAttribute(attrs, "name", node);
- String select = getAttribute(attrs, "select");
- if (select != null)
- {
- if (content != null)
- {
- String msg = "parameter '" + paramName +
- "' has both select and content";
- DOMSourceLocator l = new DOMSourceLocator(node);
- throw new TransformerConfigurationException(msg, l);
- }
- Expr expr = (Expr) xpath.compile(select);
- return new ParameterNode(null, parse(next),
- paramName, expr, global);
- }
- else
- {
- return new ParameterNode(content, parse(next),
- paramName, null, global);
- }
- }
- else if ("copy-of".equals(name))
- {
- return parseCopyOf(node, children, next);
- }
- else if ("message".equals(name))
- {
- return parseMessage(node, children, next);
- }
- else if ("apply-imports".equals(name))
- {
- return new ApplyImportsNode(parse(children), parse(next));
- }
- else
- {
- // xsl:fallback
- // Pass over any other XSLT nodes
- return parse(next);
- }
- }
- String prefix = node.getPrefix();
- if (extensionElementPrefixes.contains(prefix))
- {
- // Pass over extension elements
- return parse(next);
- }
- switch (node.getNodeType())
- {
- case Node.TEXT_NODE:
- // Determine whether to strip whitespace
- Text text = (Text) node;
- if (!isPreserved(text))
- {
- // Strip
- text.getParentNode().removeChild(text);
- return parse(next);
- }
- break;
- case Node.COMMENT_NODE:
- // Ignore comments
- return parse(next);
- case Node.ELEMENT_NODE:
- // Check for attribute value templates and use-attribute-sets
- NamedNodeMap attrs = node.getAttributes();
- boolean convert = false;
- String useAttributeSets = null;
- int len = attrs.getLength();
- for (int i = 0; i < len; i++)
- {
- Node attr = attrs.item(i);
- String value = attr.getNodeValue();
- if (Stylesheet.XSL_NS.equals(attr.getNamespaceURI()) &&
- "use-attribute-sets".equals(attr.getLocalName()))
- {
- useAttributeSets = value;
- convert = true;
- break;
- }
- int start = value.indexOf('{');
- int end = value.indexOf('}');
- if (start != -1 || end != -1)
- {
- convert = true;
- break;
- }
- }
- if (convert)
- {
- // Create an element-producing template node instead
- // with appropriate attribute-producing child template nodes
- TemplateNode child = parse(children);
- for (int i = 0; i < len; i++)
- {
- Node attr = attrs.item(i);
- String ans = attr.getNamespaceURI();
- String aname = attr.getNodeName();
- if (Stylesheet.XSL_NS.equals(ans) &&
- "use-attribute-sets".equals(attr.getLocalName()))
- {
- continue;
- }
- String value = attr.getNodeValue();
- TemplateNode grandchild =
- parseAttributeValueTemplate(value, node);
- TemplateNode n =
- parseAttributeValueTemplate(aname, node);
- TemplateNode ns = (ans == null) ? null :
- parseAttributeValueTemplate(ans, node);
- child = new AttributeNode(grandchild, child, n, ns, attr);
- }
- String ename = node.getNodeName();
- TemplateNode n = parseAttributeValueTemplate(ename, node);
- TemplateNode ns = (namespaceUri == null) ? null :
- parseAttributeValueTemplate(namespaceUri, node);
- return new ElementNode(child, parse(next),
- n, ns, useAttributeSets,
- node);
- }
- // Otherwise fall through
- break;
- }
- }
- catch (XPathExpressionException e)
- {
- DOMSourceLocator l = new DOMSourceLocator(node);
- throw new TransformerConfigurationException(e.getMessage(), l, e);
- }
- return new LiteralNode(parse(children), parse(next), node);
- }
-
- final List parseSortKeys(Node node)
- throws TransformerConfigurationException, XPathExpressionException
- {
- List ret = new LinkedList();
- while (node != null)
- {
- String namespaceUri = node.getNamespaceURI();
- if (Stylesheet.XSL_NS.equals(namespaceUri) &&
- Node.ELEMENT_NODE == node.getNodeType() &&
- "sort".equals(node.getLocalName()))
- {
- NamedNodeMap attrs = node.getAttributes();
- String s = getAttribute(attrs, "select");
- if (s == null)
- {
- s = ".";
- }
- Expr select = (Expr) xpath.compile(s);
- String l = getAttribute(attrs, "lang");
- TemplateNode lang = (l == null) ? null :
- parseAttributeValueTemplate(l, node);
- String dt = getAttribute(attrs, "data-type");
- TemplateNode dataType = (dt == null) ? null :
- parseAttributeValueTemplate(dt, node);
- String o = getAttribute(attrs, "order");
- TemplateNode order = (o == null) ? null :
- parseAttributeValueTemplate(o, node);
- String co = getAttribute(attrs, "case-order");
- TemplateNode caseOrder = (co == null) ? null :
- parseAttributeValueTemplate(co, node);
- ret.add(new SortKey(select, lang, dataType, order, caseOrder));
- }
- node = node.getNextSibling();
- }
- return ret.isEmpty() ? null : ret;
- }
-
- final List parseWithParams(Node node)
- throws TransformerConfigurationException, XPathExpressionException
- {
- List ret = new LinkedList();
- while (node != null)
- {
- String namespaceUri = node.getNamespaceURI();
- if (Stylesheet.XSL_NS.equals(namespaceUri) &&
- Node.ELEMENT_NODE == node.getNodeType() &&
- "with-param".equals(node.getLocalName()))
- {
- NamedNodeMap attrs = node.getAttributes();
- TemplateNode content = parse(node.getFirstChild());
- String name = getRequiredAttribute(attrs, "name", node);
- String select = getAttribute(attrs, "select");
- if (select != null)
- {
- if (content != null)
- {
- String msg = "parameter '" + name +
- "' has both select and content";
- DOMSourceLocator l = new DOMSourceLocator(node);
- throw new TransformerConfigurationException(msg, l);
- }
- Expr expr = (Expr) xpath.compile(select);
- ret.add(new WithParam(name, expr));
- }
- else
- {
- ret.add(new WithParam(name, content));
- }
- }
- node = node.getNextSibling();
- }
- return ret.isEmpty() ? null : ret;
- }
-
- /**
- * Created element nodes have a copy of the namespace nodes in the
- * stylesheet, except the XSLT namespace, extension namespaces, and
- * exclude-result-prefixes.
- */
- final void addNamespaceNodes(Node source, Node target, Document doc,
- Collection elementExcludeResultPrefixes)
- {
- NamedNodeMap attrs = source.getAttributes();
- if (attrs != null)
- {
- int len = attrs.getLength();
- for (int i = 0; i < len; i++)
- {
- Node attr = attrs.item(i);
- String uri = attr.getNamespaceURI();
- if (uri == XMLConstants.XMLNS_ATTRIBUTE_NS_URI)
- {
- String prefix = attr.getLocalName();
- if (XMLConstants.XMLNS_ATTRIBUTE.equals(prefix))
- {
- prefix = "#default";
- }
- String ns = attr.getNodeValue();
- // Should the namespace be excluded?
- if (XSL_NS.equals(ns) ||
- extensionElementPrefixes.contains(prefix) ||
- elementExcludeResultPrefixes.contains(prefix) ||
- excludeResultPrefixes.contains(prefix))
- {
- continue;
- }
- // Is the namespace already defined on the target?
- if (prefix == "#default")
- {
- prefix = null;
- }
- if (target.lookupNamespaceURI(prefix) != null)
- {
- continue;
- }
- attr = attr.cloneNode(true);
- attr = doc.adoptNode(attr);
- target.getAttributes().setNamedItemNS(attr);
- }
- }
- }
- Node parent = source.getParentNode();
- if (parent != null)
- {
- addNamespaceNodes(parent, target, doc, elementExcludeResultPrefixes);
- }
- }
-
- static final String getAttribute(NamedNodeMap attrs, String name)
- {
- Node attr = attrs.getNamedItem(name);
- if (attr == null)
- {
- return null;
- }
- String ret = attr.getNodeValue();
- if (ret.length() == 0)
- {
- return null;
- }
- return ret;
- }
-
- static final String getRequiredAttribute(NamedNodeMap attrs, String name,
- Node source)
- throws TransformerConfigurationException
- {
- String value = getAttribute(attrs, name);
- if (value == null || value.length() == 0)
- {
- String msg =
- name + " attribute is required on " + source.getNodeName();
- DOMSourceLocator l = new DOMSourceLocator(source);
- throw new TransformerConfigurationException(msg, l);
- }
- return value;
- }
-
- // Handle user data changes when nodes are cloned etc
-
- public void handle(short op, String key, Object data, Node src, Node dst)
- {
- dst.setUserData(key, data, this);
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/SystemPropertyFunction.java b/libjava/gnu/xml/transform/SystemPropertyFunction.java
deleted file mode 100644
index 33616d39628..00000000000
--- a/libjava/gnu/xml/transform/SystemPropertyFunction.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/* SystemPropertyFunction.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.List;
-import javax.xml.namespace.QName;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.Function;
-
-/**
- * The XSLT <code>system-property()</code>function.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class SystemPropertyFunction
- extends Expr
- implements XPathFunction, Function
-{
-
- List args;
-
- public Object evaluate(List args)
- throws XPathFunctionException
- {
- String name = (String) args.get(0);
- return systemProperty(QName.valueOf(name));
- }
-
- public void setArguments(List args)
- {
- this.args = args;
- }
-
- public Object evaluate(Node context, int pos, int len)
- {
- int arity = args.size();
- List values = new ArrayList(arity);
- for (int i = 0; i < arity; i++)
- {
- Expr arg = (Expr) args.get(i);
- values.add(arg.evaluate(context, pos, len));
- }
- String name = _string(context, values.get(0));
- return systemProperty(QName.valueOf(name));
- }
-
- Object systemProperty(QName name)
- {
- String localName = name.getLocalPart();
- String prefix = name.getPrefix();
- String uri = name.getNamespaceURI();
- if (Stylesheet.XSL_NS.equals(uri) ||
- "xsl".equals(prefix))
- {
- if ("version".equals(localName))
- {
- return new Double(1.0d);
- }
- else if ("vendor".equals(localName))
- {
- return "The Free Software Foundation";
- }
- else if ("vendor-url".equals(localName))
- {
- return "http://www.gnu.org/";
- }
- else
- {
- return "";
- }
- }
- return System.getProperty(localName);
- }
-
- public Expr clone(Object context)
- {
- SystemPropertyFunction f = new SystemPropertyFunction();
- int len = args.size();
- List args2 = new ArrayList(len);
- for (int i = 0; i < len; i++)
- {
- args2.add(((Expr) args.get(i)).clone(context));
- }
- f.setArguments(args2);
- return f;
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/Template.java b/libjava/gnu/xml/transform/Template.java
deleted file mode 100644
index 1673a8aa63b..00000000000
--- a/libjava/gnu/xml/transform/Template.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/* Template.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.io.PrintStream;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.NameTest;
-import gnu.xml.xpath.NodeTypeTest;
-import gnu.xml.xpath.Pattern;
-import gnu.xml.xpath.Selector;
-import gnu.xml.xpath.Test;
-
-/**
- * A template in an XSL stylesheet.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class Template
- implements Comparable
-{
-
- static final double DEFAULT_PRIORITY = 0.5d;
-
- final Stylesheet stylesheet;
- final QName name;
- final Pattern match;
- final TemplateNode node;
- final double priority;
- final int precedence;
- final QName mode;
-
- Template(Stylesheet stylesheet,
- QName name, Pattern match, TemplateNode node,
- int precedence, double priority, QName mode)
- {
- this.stylesheet = stylesheet;
- this.name = name;
- this.match = match;
- this.node = node;
- // adjust priority if necessary
- // see XSLT section 5.5
- Test test = getNodeTest(match);
- if (test != null)
- {
- if (test instanceof NameTest)
- {
- NameTest nameTest = (NameTest) test;
- if (nameTest.matchesAny() ||
- nameTest.matchesAnyLocalName())
- {
- priority = -0.25d;
- }
- else
- {
- priority = 0.0d;
- }
- }
- else
- {
- NodeTypeTest nodeTypeTest = (NodeTypeTest) test;
- if (nodeTypeTest.getNodeType() ==
- Node.PROCESSING_INSTRUCTION_NODE &&
- nodeTypeTest.getData() != null)
- {
- priority = 0.0d;
- }
- else
- {
- priority = -0.5d;
- }
- }
- }
- this.precedence = precedence;
- this.priority = priority;
- this.mode = mode;
- }
-
- Template clone(Stylesheet stylesheet)
- {
- // FIXME by cloning we lose the imports() functionality, so
- // apply-imports will be broken.
- return new Template(stylesheet,
- name,
- (match == null) ? null :
- (Pattern) match.clone(stylesheet),
- (node == null) ? null : node.clone(stylesheet),
- precedence,
- priority,
- mode);
- }
-
- public int compareTo(Object other)
- {
- if (other instanceof Template)
- {
- Template t = (Template) other;
- int d = t.precedence - precedence;
- if (d != 0)
- {
- return d;
- }
- double d2 = t.priority - priority;
- if (d2 != 0.0d)
- {
- return (int) Math.round(d2 * 1000.0d);
- }
- }
- return 0;
- }
-
- Test getNodeTest(Expr expr)
- {
- if (expr instanceof Selector)
- {
- Selector selector = (Selector) expr;
- Test[] tests = selector.getTests();
- if (tests.length > 0)
- {
- return tests[0];
- }
- }
- return null;
- }
-
- boolean matches(QName mode, Node node)
- {
- if ((mode == null && this.mode != null) ||
- (mode != null && !mode.equals(this.mode)))
- {
- return false;
- }
- if (match == null)
- {
- return false;
- }
- return match.matches(node);
- }
-
- boolean matches(QName name)
- {
- return name.equals(this.name);
- }
-
- boolean imports(Template other)
- {
- for (Stylesheet ctx = other.stylesheet.parent;
- ctx != null;
- ctx = ctx.parent)
- {
- if (ctx == stylesheet)
- {
- return true;
- }
- }
- return false;
- }
-
- /**
- * @param stylesheet the stylesheet
- * @param parent the parent of result nodes
- * @param context the context node in the source document
- * @param pos the context position
- * @param len the context size
- * @param nextSibling if non-null, add result nodes before this node
- */
- void apply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- //System.err.println("...applying " + toString() + " to " + context);
- if (node != null)
- {
- node.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- if (name != null)
- {
- buf.append("name=");
- buf.append(name);
- }
- else if (match != null)
- {
- buf.append("match=");
- buf.append(match);
- }
- if (mode != null)
- {
- buf.append(",mode=");
- buf.append(mode);
- }
- buf.append(']');
- return buf.toString();
-
- //return (name != null) ? name.toString() : match.toString();
- }
-
- void list(PrintStream out)
- {
- out.println(toString());
- if (node != null)
- {
- node.list(1, out, true);
- }
- }
-
-}
diff --git a/libjava/gnu/xml/transform/TemplateNode.java b/libjava/gnu/xml/transform/TemplateNode.java
deleted file mode 100644
index df13a4d1ec0..00000000000
--- a/libjava/gnu/xml/transform/TemplateNode.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/* TemplateNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.io.PrintStream;
-import java.util.Comparator;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.DocumentOrderComparator;
-
-/**
- * Wrapper for a source node in a template.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-abstract class TemplateNode
-{
-
- static final Comparator documentOrderComparator =
- new DocumentOrderComparator();
-
- final TemplateNode children;
- final TemplateNode next;
-
- TemplateNode(TemplateNode children, TemplateNode next)
- {
- this.children = children;
- this.next = next;
- }
-
- final void apply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- if (stylesheet.terminated)
- {
- return;
- }
- if (Thread.currentThread().isInterrupted())
- {
- // Try to head off any infinite loops at the pass
- return;
- }
- if (stylesheet.debug)
- {
- System.err.println("Applying " + toString());
- }
- doApply(stylesheet, mode, context, pos, len, parent, nextSibling);
- }
-
- abstract void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException;
-
- abstract TemplateNode clone(Stylesheet stylesheet);
-
- /**
- * Debugging
- */
- void list(int depth, PrintStream out, boolean listNext)
- {
- for (int i = 0; i < depth; i++)
- {
- out.print(" ");
- }
- out.println(toString());
- if (children != null)
- {
- children.list(depth + 1, out, true);
- }
- if (listNext && next != null)
- {
- next.list(depth, out, listNext);
- }
- }
-
-}
diff --git a/libjava/gnu/xml/transform/TemplatesImpl.java b/libjava/gnu/xml/transform/TemplatesImpl.java
deleted file mode 100644
index 527bd979db0..00000000000
--- a/libjava/gnu/xml/transform/TemplatesImpl.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/* TemplatesImpl.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.Properties;
-import javax.xml.transform.Templates;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-
-/**
- * GNU precompiled stylesheet implementation.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class TemplatesImpl
- implements Templates
-{
-
- final TransformerFactoryImpl factory;
- final Stylesheet stylesheet;
- final Properties outputProperties;
-
- TemplatesImpl(TransformerFactoryImpl factory, Stylesheet stylesheet)
- {
- this.factory = factory;
- this.stylesheet = stylesheet;
- outputProperties = new TransformerOutputProperties(stylesheet);
- }
-
- public Transformer newTransformer()
- throws TransformerConfigurationException
- {
- Stylesheet stylesheet = (Stylesheet) this.stylesheet.clone();
- TransformerImpl transformer =
- new TransformerImpl(factory, stylesheet, outputProperties);
- stylesheet.transformer = transformer;
- return transformer;
- }
-
- public Properties getOutputProperties()
- {
- return (Properties) outputProperties.clone();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/TextNode.java b/libjava/gnu/xml/transform/TextNode.java
deleted file mode 100644
index b5ea1b57af7..00000000000
--- a/libjava/gnu/xml/transform/TextNode.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/* TextNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing the XSL <code>text</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class TextNode
- extends TemplateNode
-{
-
- final boolean disableOutputEscaping;
-
- TextNode(TemplateNode children, TemplateNode next,
- boolean disableOutputEscaping)
- {
- super(children, next);
- this.disableOutputEscaping = disableOutputEscaping;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new TextNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- disableOutputEscaping);
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- String value = "";
- Document doc = (parent instanceof Document) ? (Document) parent :
- parent.getOwnerDocument();
- if (children != null)
- {
- // Create a document fragment to hold the text
- DocumentFragment fragment = doc.createDocumentFragment();
- // Apply children to the fragment
- children.apply(stylesheet, mode,
- context, pos, len,
- fragment, null);
- // Use XPath string-value of fragment
- value = Expr.stringValue(fragment);
- }
- Text text = doc.createTextNode(value);
- if (disableOutputEscaping)
- {
- text.setUserData("disable-output-escaping", "yes", stylesheet);
- }
- // Insert into result tree
- if (nextSibling != null)
- {
- parent.insertBefore(text, nextSibling);
- }
- else
- {
- parent.appendChild(text);
- }
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
-}
diff --git a/libjava/gnu/xml/transform/TransformerFactoryImpl.java b/libjava/gnu/xml/transform/TransformerFactoryImpl.java
deleted file mode 100644
index dde2017ff6b..00000000000
--- a/libjava/gnu/xml/transform/TransformerFactoryImpl.java
+++ /dev/null
@@ -1,345 +0,0 @@
-/* TransformerFactoryImpl.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Properties;
-import javax.xml.transform.ErrorListener;
-import javax.xml.transform.Source;
-import javax.xml.transform.Templates;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.URIResolver;
-import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.xpath.XPathFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import gnu.xml.dom.DomDocument;
-
-/**
- * GNU transformer factory implementation.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-public class TransformerFactoryImpl
- extends TransformerFactory
-{
-
- final XPathFactory xpathFactory;
- final XSLURIResolver resolver;
- ErrorListener userListener;
- URIResolver userResolver;
-
- public TransformerFactoryImpl()
- {
- xpathFactory = new gnu.xml.xpath.XPathFactoryImpl();
- resolver = new XSLURIResolver();
- }
-
- public Transformer newTransformer(Source source)
- throws TransformerConfigurationException
- {
- Stylesheet stylesheet = newStylesheet(source, 0, null);
- Properties outputProperties =
- new TransformerOutputProperties(stylesheet);
- TransformerImpl transformer =
- new TransformerImpl(this, stylesheet, outputProperties);
- stylesheet.transformer = transformer;
- return transformer;
- }
-
- public Transformer newTransformer()
- throws TransformerConfigurationException
- {
- return new TransformerImpl(this, null, new Properties());
- }
-
- public Templates newTemplates(Source source)
- throws TransformerConfigurationException
- {
- Stylesheet stylesheet = newStylesheet(source, 0, null);
- return new TemplatesImpl(this, stylesheet);
- }
-
- Stylesheet newStylesheet(Source source, int precedence, Stylesheet parent)
- throws TransformerConfigurationException
- {
- Document doc = null;
- String systemId = null;
- if (source != null)
- {
- try
- {
- DOMSource ds;
- synchronized (resolver)
- {
- resolver.setUserResolver(userResolver);
- resolver.setUserListener(userListener);
- ds = resolver.resolveDOM(source, null, null);
- }
- Node node = ds.getNode();
- if (node == null)
- {
- throw new TransformerConfigurationException("no source document");
- }
- doc = (node instanceof Document) ? (Document) node :
- node.getOwnerDocument();
- systemId = ds.getSystemId();
- }
- catch (TransformerException e)
- {
- throw new TransformerConfigurationException(e);
- }
- }
- return new Stylesheet(this, parent, doc, systemId, precedence);
- }
-
- public Source getAssociatedStylesheet(Source source,
- String media,
- String title,
- String charset)
- throws TransformerConfigurationException
- {
- try
- {
- DOMSource ds;
- synchronized (resolver)
- {
- resolver.setUserResolver(userResolver);
- resolver.setUserListener(userListener);
- ds = resolver.resolveDOM(source, null, null);
- }
- Node node = ds.getNode();
- if (node == null)
- {
- throw new TransformerConfigurationException("no source document");
- }
- Document doc = (node instanceof Document) ? (Document) node :
- node.getOwnerDocument();
- LinkedList matches = new LinkedList();
- for (node = doc.getFirstChild();
- node != null;
- node = node.getNextSibling())
- {
- if (node.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE &&
- "xml-stylesheet".equals(node.getNodeName()))
- {
- Map params = parseParameters(node.getNodeValue());
- if (media != null && !media.equals(params.get("media")))
- {
- continue;
- }
- if (title != null && !title.equals(params.get("title")))
- {
- continue;
- }
- if (charset != null && !charset.equals(params.get("charset")))
- {
- continue;
- }
- String href = (String) params.get("href");
- URL url = resolver.resolveURL(null, node.getBaseURI(), href);
- matches.add(url);
- }
- }
- switch (matches.size())
- {
- case 0:
- return null;
- case 1:
- return new StreamSource(((URL) matches.getFirst()).toString());
- default:
- // Create a source representing a stylesheet with a list of
- // imports
- DomDocument ssDoc = new DomDocument();
- ssDoc.setBuilding(true);
- // Create document element
- Node root =
- ssDoc.createElementNS(Stylesheet.XSL_NS, "stylesheet");
- Node version =
- ssDoc.createAttributeNS(null, "version");
- version.setNodeValue("1.0");
- root.getAttributes().setNamedItemNS(version);
- ssDoc.appendChild(root);
- // Create xsl:import for each URL
- for (Iterator i = matches.iterator(); i.hasNext(); )
- {
- URL url = (URL) i.next();
- Node imp =
- ssDoc.createElementNS(Stylesheet.XSL_NS, "import");
- Node href =
- ssDoc.createAttributeNS(null, "href");
- href.setNodeValue(url.toString());
- imp.getAttributes().setNamedItemNS(href);
- root.appendChild(imp);
- }
- ssDoc.setBuilding(false);
- return new DOMSource(ssDoc);
- }
- }
- catch (IOException e)
- {
- throw new TransformerConfigurationException(e);
- }
- catch (TransformerException e)
- {
- throw new TransformerConfigurationException(e);
- }
- }
-
- Map parseParameters(String data)
- {
- Map ret = new LinkedHashMap();
- int len = data.length();
- String key = null;
- int start = 0;
- char quoteChar = '\u0000';
- for (int i = 0; i < len; i++)
- {
- char c = data.charAt(i);
- if (quoteChar == '\u0000' && c == ' ')
- {
- if (key == null && start < i)
- {
- key = data.substring(start, i);
- }
- else
- {
- String val = unquote(data.substring(start, i).trim());
- ret.put(key, val);
- key = null;
- }
- start = i + 1;
- }
- else if (c == '"')
- {
- quoteChar = (quoteChar == c) ? '\u0000' : c;
- }
- else if (c == '\'')
- {
- quoteChar = (quoteChar == c) ? '\u0000' : c;
- }
- }
- if (start < len && key != null)
- {
- String val = unquote(data.substring(start, len).trim());
- ret.put(key, val);
- }
- return ret;
- }
-
- String unquote(String text)
- {
- int end = text.length() - 1;
- if (text.charAt(0) == '\'' && text.charAt(end) == '\'')
- {
- return text.substring(1, end);
- }
- if (text.charAt(0) == '"' && text.charAt(end) == '"')
- {
- return text.substring(1, end);
- }
- return text;
- }
-
- public void setURIResolver(URIResolver resolver)
- {
- userResolver = resolver;
- }
-
- public URIResolver getURIResolver()
- {
- return userResolver;
- }
-
- public void setFeature(String name, boolean value)
- throws TransformerConfigurationException
- {
- throw new TransformerConfigurationException("not supported");
- }
-
- public boolean getFeature(String name)
- {
- if (SAXSource.FEATURE.equals(name) ||
- SAXResult.FEATURE.equals(name) ||
- StreamSource.FEATURE.equals(name) ||
- StreamResult.FEATURE.equals(name) ||
- DOMSource.FEATURE.equals(name) ||
- DOMResult.FEATURE.equals(name))
- {
- return true;
- }
- return false;
- }
-
- public void setAttribute(String name, Object value)
- throws IllegalArgumentException
- {
- throw new IllegalArgumentException("not supported");
- }
-
- public Object getAttribute(String name)
- throws IllegalArgumentException
- {
- throw new IllegalArgumentException("not supported");
- }
-
- public void setErrorListener(ErrorListener listener)
- throws IllegalArgumentException
- {
- userListener = listener;
- }
-
- public ErrorListener getErrorListener()
- {
- return userListener;
- }
-
-}
diff --git a/libjava/gnu/xml/transform/TransformerImpl.java b/libjava/gnu/xml/transform/TransformerImpl.java
deleted file mode 100644
index 73c4c0a4e08..00000000000
--- a/libjava/gnu/xml/transform/TransformerImpl.java
+++ /dev/null
@@ -1,580 +0,0 @@
-/* TransformerImpl.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.io.BufferedOutputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.net.MalformedURLException;
-import java.net.UnknownServiceException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Collection;
-import java.util.Properties;
-import javax.xml.transform.ErrorListener;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.URIResolver;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.stream.StreamResult;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentType;
-import org.w3c.dom.DOMImplementation;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.ext.LexicalHandler;
-import gnu.xml.dom.DomDoctype;
-import gnu.xml.dom.DomDocument;
-import gnu.xml.dom.ls.WriterOutputStream;
-
-/**
- * The transformation process for a given stylesheet.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class TransformerImpl
- extends Transformer
-{
-
- final TransformerFactoryImpl factory;
- final Stylesheet stylesheet;
- URIResolver uriResolver;
- ErrorListener errorListener;
- Properties outputProperties;
-
- TransformerImpl(TransformerFactoryImpl factory,
- Stylesheet stylesheet,
- Properties outputProperties)
- throws TransformerConfigurationException
- {
- this.factory = factory;
- uriResolver = factory.userResolver;
- errorListener = factory.userListener;
- this.stylesheet = stylesheet;
- this.outputProperties = outputProperties;
- if (stylesheet != null)
- {
- // Set up parameter context for this transformer
- stylesheet.bindings.push(false);
- }
- }
-
- public void transform(Source xmlSource, Result outputTarget)
- throws TransformerException
- {
- // Get the source tree
- DOMSource source;
- synchronized (factory.resolver)
- {
- factory.resolver.setUserResolver(uriResolver);
- factory.resolver.setUserListener(errorListener);
- source = factory.resolver.resolveDOM(xmlSource, null, null);
- }
- Node context = source.getNode();
- Document doc = (context instanceof Document) ? (Document) context :
- context.getOwnerDocument();
- if (doc instanceof DomDocument)
- {
- // Suppress mutation events
- ((DomDocument) doc).setBuilding(true);
- // TODO find a better/more generic way of doing this than
- // casting
- }
- // Get the result tree
- Node parent = null, nextSibling = null;
- if (outputTarget instanceof DOMResult)
- {
- DOMResult dr = (DOMResult) outputTarget;
- parent = dr.getNode();
- nextSibling = dr.getNextSibling();
-
- Document rdoc = (parent instanceof Document) ? (Document) parent :
- parent.getOwnerDocument();
- if (rdoc instanceof DomDocument)
- {
- // Suppress mutation events and allow multiple root elements
- DomDocument drdoc = (DomDocument) rdoc;
- drdoc.setBuilding(true);
- drdoc.setCheckWellformedness(false);
- // TODO find a better/more generic way of doing this than
- // casting
- }
- }
- boolean created = false;
- // Transformation
- if (stylesheet != null)
- {
- if (parent == null)
- {
- // Create a new document to hold the result
- DomDocument resultDoc = new DomDocument();
- resultDoc.setBuilding(true);
- resultDoc.setCheckWellformedness(false);
- parent = resultDoc;
- created = true;
- }
- // Make a copy of the source node, and strip it
- context = context.cloneNode(true);
- strip(context);
- // XSLT transformation
- try
- {
- // Set output properties in the underlying stylesheet
- ((TransformerOutputProperties) outputProperties).apply();
- stylesheet.initTopLevelVariables(context);
- TemplateNode t = stylesheet.getTemplate(null, context, false);
- if (t != null)
- {
- stylesheet.current = context;
- t.apply(stylesheet, null, context, 1, 1, parent, nextSibling);
- }
- }
- catch (TransformerException e)
- {
- // Done transforming, reset document
- if (doc instanceof DomDocument)
- {
- ((DomDocument) doc).setBuilding(false);
- }
- throw e;
- }
- }
- else
- {
- // Identity transform
- Node clone = context.cloneNode(true);
- if (context.getNodeType() != Node.DOCUMENT_NODE)
- {
- Document resultDoc;
- if (parent == null)
- {
- // Create a new document to hold the result
- DomDocument rd = new DomDocument();
- rd.setBuilding(true);
- rd.setCheckWellformedness(false);
- parent = resultDoc = rd;
- created = true;
- }
- else
- {
- resultDoc = (parent instanceof Document) ?
- (Document) parent :
- parent.getOwnerDocument();
- }
- Document sourceDoc = context.getOwnerDocument();
- if (sourceDoc != resultDoc)
- {
- clone = resultDoc.adoptNode(clone);
- }
- if (nextSibling != null)
- {
- parent.insertBefore(clone, nextSibling);
- }
- else
- {
- parent.appendChild(clone);
- }
- }
- else
- {
- // Cannot append document to another tree
- parent = clone;
- created = true;
- }
- }
- String method = outputProperties.getProperty(OutputKeys.METHOD);
- int outputMethod = "html".equals(method) ? Stylesheet.OUTPUT_HTML :
- "text".equals(method) ? Stylesheet.OUTPUT_TEXT :
- Stylesheet.OUTPUT_XML;
- String encoding = outputProperties.getProperty(OutputKeys.ENCODING);
- String publicId = outputProperties.getProperty(OutputKeys.DOCTYPE_PUBLIC);
- String systemId = outputProperties.getProperty(OutputKeys.DOCTYPE_SYSTEM);
- String version = outputProperties.getProperty(OutputKeys.VERSION);
- boolean omitXmlDeclaration =
- "yes".equals(outputProperties.getProperty(OutputKeys.OMIT_XML_DECLARATION));
- boolean standalone =
- "yes".equals(outputProperties.getProperty(OutputKeys.STANDALONE));
- String mediaType = outputProperties.getProperty(OutputKeys.MEDIA_TYPE);
- // TODO cdata-section-elements
- // TODO indent
- if (created)
- {
- // Discover document element
- DomDocument resultDoc = (DomDocument) parent;
- Node root = resultDoc.getDocumentElement();
- // Add doctype if specified
- if ((publicId != null || systemId != null) &&
- root != null)
- {
- // We must know the name of the root element to
- // create the document type
- resultDoc.appendChild(new DomDoctype(resultDoc,
- root.getNodeName(),
- publicId,
- systemId));
- }
- resultDoc.setBuilding(false);
- resultDoc.setCheckWellformedness(true);
- }
- else if (publicId != null || systemId != null)
- {
- switch (parent.getNodeType())
- {
- case Node.DOCUMENT_NODE:
- case Node.DOCUMENT_FRAGMENT_NODE:
- Document resultDoc = (parent instanceof Document) ?
- (Document) parent :
- parent.getOwnerDocument();
- DOMImplementation impl = resultDoc.getImplementation();
- DocumentType doctype =
- impl.createDocumentType(resultDoc.getNodeName(),
- publicId,
- systemId);
- // Try to insert doctype before first element
- Node ctx = parent.getFirstChild();
- for (; ctx != null &&
- ctx.getNodeType() != Node.ELEMENT_NODE;
- ctx = ctx.getNextSibling())
- {
- }
- if (ctx != null)
- {
- parent.insertBefore(doctype, ctx);
- }
- else
- {
- parent.appendChild(doctype);
- }
- }
- }
- if (version != null)
- {
- parent.setUserData("version", version, stylesheet);
- }
- if (omitXmlDeclaration)
- {
- parent.setUserData("omit-xml-declaration", "yes", stylesheet);
- }
- if (standalone)
- {
- parent.setUserData("standalone", "yes", stylesheet);
- }
- if (mediaType != null)
- {
- parent.setUserData("media-type", mediaType, stylesheet);
- }
- // Render result to the target device
- if (outputTarget instanceof DOMResult)
- {
- if (created)
- {
- DOMResult dr = (DOMResult) outputTarget;
- dr.setNode(parent);
- dr.setNextSibling(null);
- }
- }
- else if (outputTarget instanceof StreamResult)
- {
- StreamResult sr = (StreamResult) outputTarget;
- IOException ex = null;
- try
- {
- writeStreamResult(parent, sr, outputMethod, encoding);
- }
- catch (UnsupportedEncodingException e)
- {
- try
- {
- writeStreamResult(parent, sr, outputMethod, "UTF-8");
- }
- catch (IOException e2)
- {
- ex = e2;
- }
- }
- catch (IOException e)
- {
- ex = e;
- }
- if (ex != null)
- {
- if (errorListener != null)
- {
- errorListener.error(new TransformerException(ex));
- }
- else
- {
- ex.printStackTrace(System.err);
- }
- }
- }
- else if (outputTarget instanceof SAXResult)
- {
- SAXResult sr = (SAXResult) outputTarget;
- try
- {
- ContentHandler ch = sr.getHandler();
- LexicalHandler lh = sr.getLexicalHandler();
- if (lh == null && ch instanceof LexicalHandler)
- {
- lh = (LexicalHandler) ch;
- }
- SAXSerializer serializer = new SAXSerializer();
- serializer.serialize(parent, ch, lh);
- }
- catch (SAXException e)
- {
- if (errorListener != null)
- {
- errorListener.error(new TransformerException(e));
- }
- else
- {
- e.printStackTrace(System.err);
- }
- }
- }
- }
-
- /**
- * Strip whitespace from the source tree.
- */
- void strip(Node node)
- throws TransformerConfigurationException
- {
- short nt = node.getNodeType();
- if (nt == Node.ENTITY_REFERENCE_NODE)
- {
- // Replace entity reference with its content
- Node parent = node.getParentNode();
- Node child = node.getFirstChild();
- if (child != null)
- {
- strip(child);
- }
- while (child != null)
- {
- Node next = child.getNextSibling();
- node.removeChild(child);
- parent.insertBefore(child, node);
- child = next;
- }
- parent.removeChild(node);
- }
- if (nt == Node.TEXT_NODE) // CDATA sections ?
- {
- if (!stylesheet.isPreserved((Text) node))
- {
- node.getParentNode().removeChild(node);
- }
- }
- else
- {
- for (Node child = node.getFirstChild(); child != null;
- child = child.getNextSibling())
- {
- strip(child);
- }
- }
- }
-
- /**
- * Obtain a suitable output stream for writing the result to,
- * and use the StreamSerializer to write the result tree to the stream.
- */
- void writeStreamResult(Node node, StreamResult sr, int outputMethod,
- String encoding)
- throws IOException
- {
- OutputStream out = null;
- try
- {
- out = sr.getOutputStream();
- if (out == null)
- {
- Writer writer = sr.getWriter();
- if (writer != null)
- {
- out = new WriterOutputStream(writer);
- }
- }
- if (out == null)
- {
- String systemId = sr.getSystemId();
- try
- {
- URL url = new URL(systemId);
- URLConnection connection = url.openConnection();
- connection.setDoOutput(true);
- out = connection.getOutputStream();
- }
- catch (MalformedURLException e)
- {
- out = new FileOutputStream(systemId);
- }
- catch (UnknownServiceException e)
- {
- URL url = new URL(systemId);
- out = new FileOutputStream(url.getPath());
- }
- }
- out = new BufferedOutputStream(out);
- StreamSerializer serializer =
- new StreamSerializer(outputMethod, encoding, null);
- if (stylesheet != null)
- {
- Collection celem = stylesheet.outputCdataSectionElements;
- serializer.setCdataSectionElements(celem);
- }
- serializer.serialize(node, out);
- out.flush();
- }
- finally
- {
- try
- {
- if (out != null)
- {
- out.close();
- }
- }
- catch (IOException e)
- {
- }
- }
- }
-
- void copyChildren(Document dstDoc, Node src, Node dst)
- {
- Node srcChild = src.getFirstChild();
- while (srcChild != null)
- {
- Node dstChild = dstDoc.adoptNode(srcChild);
- dst.appendChild(dstChild);
- srcChild = srcChild.getNextSibling();
- }
- }
-
- public void setParameter(String name, Object value)
- {
- if (stylesheet != null)
- {
- stylesheet.bindings.set(name, value, false);
- }
- }
-
- public Object getParameter(String name)
- {
- if (stylesheet != null)
- {
- return stylesheet.bindings.get(name, null, 1, 1);
- }
- return null;
- }
-
- public void clearParameters()
- {
- if (stylesheet != null)
- {
- stylesheet.bindings.pop(false);
- stylesheet.bindings.push(false);
- }
- }
-
- public void setURIResolver(URIResolver resolver)
- {
- uriResolver = resolver;
- }
-
- public URIResolver getURIResolver()
- {
- return uriResolver;
- }
-
- public void setOutputProperties(Properties oformat)
- throws IllegalArgumentException
- {
- if (oformat == null)
- {
- outputProperties.clear();
- }
- else
- {
- outputProperties.putAll(oformat);
- }
- }
-
- public Properties getOutputProperties()
- {
- return (Properties) outputProperties.clone();
- }
-
- public void setOutputProperty(String name, String value)
- throws IllegalArgumentException
- {
- outputProperties.put(name, value);
- }
-
- public String getOutputProperty(String name)
- throws IllegalArgumentException
- {
- return outputProperties.getProperty(name);
- }
-
- public void setErrorListener(ErrorListener listener)
- {
- errorListener = listener;
- }
-
- public ErrorListener getErrorListener()
- {
- return errorListener;
- }
-
-}
diff --git a/libjava/gnu/xml/transform/TransformerOutputProperties.java b/libjava/gnu/xml/transform/TransformerOutputProperties.java
deleted file mode 100644
index cc8593c4601..00000000000
--- a/libjava/gnu/xml/transform/TransformerOutputProperties.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/* TransformerOutputProperties.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.Properties;
-import java.util.StringTokenizer;
-import javax.xml.transform.OutputKeys;
-
-/**
- * Helper class to manage JAXP user setting of output properties.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class TransformerOutputProperties
- extends Properties
-{
-
- final Properties defaultProperties;
- final Stylesheet stylesheet;
- boolean dirty;
-
- TransformerOutputProperties(Stylesheet stylesheet)
- {
- this.stylesheet = stylesheet;
- defaultProperties = new Properties();
- switch (stylesheet.outputMethod)
- {
- case Stylesheet.OUTPUT_XML:
- defaultProperties.put(OutputKeys.METHOD, "xml");
- break;
- case Stylesheet.OUTPUT_HTML:
- defaultProperties.put(OutputKeys.METHOD, "html");
- break;
- case Stylesheet.OUTPUT_TEXT:
- defaultProperties.put(OutputKeys.METHOD, "text");
- break;
- }
- if (stylesheet.outputVersion != null)
- {
- defaultProperties.put(OutputKeys.VERSION, stylesheet.outputVersion);
- }
- if (stylesheet.outputEncoding != null)
- {
- defaultProperties.put(OutputKeys.ENCODING, stylesheet.outputEncoding);
- }
- defaultProperties.put(OutputKeys.OMIT_XML_DECLARATION,
- stylesheet.outputOmitXmlDeclaration ? "yes" : "no");
- defaultProperties.put(OutputKeys.STANDALONE,
- stylesheet.outputStandalone ? "yes" : "no");
- if (stylesheet.outputPublicId != null)
- {
- defaultProperties.put(OutputKeys.DOCTYPE_PUBLIC,
- stylesheet.outputPublicId);
- }
- if (stylesheet.outputSystemId != null)
- {
- defaultProperties.put(OutputKeys.DOCTYPE_SYSTEM,
- stylesheet.outputSystemId);
- }
- StringBuffer buf = new StringBuffer();
- for (Iterator i = stylesheet.outputCdataSectionElements.iterator();
- i.hasNext(); )
- {
- if (buf.length() > 0)
- {
- buf.append(' ');
- }
- buf.append((String) i.next());
- }
- defaultProperties.put(OutputKeys.CDATA_SECTION_ELEMENTS, buf.toString());
- defaultProperties.put(OutputKeys.INDENT,
- stylesheet.outputIndent ? "yes" : "no");
- if (stylesheet.outputMediaType != null)
- {
- defaultProperties.put(OutputKeys.MEDIA_TYPE,
- stylesheet.outputMediaType);
- }
- }
-
- public String getProperty(String key)
- {
- String val = super.getProperty(key);
- if (val == null)
- {
- val = defaultProperties.getProperty(key);
- }
- return val;
- }
-
- public Object put(Object key, Object value)
- {
- Object ret = super.put(key, value);
- dirty = true;
- return ret;
- }
-
- public void clear()
- {
- super.clear();
- dirty = true;
- }
-
- /**
- * Applies the current set of properties to the underlying stylesheet.
- */
- void apply()
- {
- if (!dirty)
- {
- return;
- }
- String method = getProperty(OutputKeys.METHOD);
- if ("xml".equals(method))
- {
- stylesheet.outputMethod = Stylesheet.OUTPUT_XML;
- }
- else if ("html".equals(method))
- {
- stylesheet.outputMethod = Stylesheet.OUTPUT_HTML;
- }
- else if ("text".equals(method))
- {
- stylesheet.outputMethod = Stylesheet.OUTPUT_TEXT;
- }
- stylesheet.outputVersion = getProperty(OutputKeys.VERSION);
- stylesheet.outputEncoding = getProperty(OutputKeys.ENCODING);
- stylesheet.outputOmitXmlDeclaration =
- "yes".equals(getProperty(OutputKeys.OMIT_XML_DECLARATION));
- stylesheet.outputStandalone =
- "yes".equals(getProperty(OutputKeys.STANDALONE));
- stylesheet.outputPublicId = getProperty(OutputKeys.DOCTYPE_PUBLIC);
- stylesheet.outputSystemId = getProperty(OutputKeys.DOCTYPE_SYSTEM);
- StringTokenizer st =
- new StringTokenizer(getProperty(OutputKeys.CDATA_SECTION_ELEMENTS));
- Collection acc = new LinkedHashSet();
- while (st.hasMoreTokens())
- {
- acc.add(st.nextToken());
- }
- stylesheet.outputCdataSectionElements = acc;
- stylesheet.outputIndent = "yes".equals(getProperty(OutputKeys.INDENT));
- stylesheet.outputMediaType = getProperty(OutputKeys.MEDIA_TYPE);
- dirty = false;
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/URIResolverEntityResolver.java b/libjava/gnu/xml/transform/URIResolverEntityResolver.java
deleted file mode 100644
index 762416fde36..00000000000
--- a/libjava/gnu/xml/transform/URIResolverEntityResolver.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/* URIResolverEntityResolver.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.io.IOException;
-import javax.xml.transform.Source;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.URIResolver;
-import javax.xml.transform.sax.SAXSource;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- * EntityResolver that wraps a URIResolver.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class URIResolverEntityResolver
- implements EntityResolver
-{
-
- final URIResolver resolver;
-
- URIResolverEntityResolver(URIResolver resolver)
- {
- this.resolver = resolver;
- }
-
- public InputSource resolveEntity(String publicId, String systemId)
- throws SAXException, IOException
- {
- try
- {
- Source source = resolver.resolve(null, systemId);
- if (source == null)
- {
- return null;
- }
- return SAXSource.sourceToInputSource(source);
- }
- catch (TransformerException e)
- {
- throw new SAXException(e);
- }
- }
-
-}
diff --git a/libjava/gnu/xml/transform/UnparsedEntityUriFunction.java b/libjava/gnu/xml/transform/UnparsedEntityUriFunction.java
deleted file mode 100644
index ca72b6534df..00000000000
--- a/libjava/gnu/xml/transform/UnparsedEntityUriFunction.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/* UnparsedEntityUriFunction.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionException;
-import org.w3c.dom.DocumentType;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.Notation;
-import gnu.xml.xpath.Expr;
-import gnu.xml.xpath.Function;
-
-/**
- * The XSLT <code>unparsed-entity-uri()</code>function.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class UnparsedEntityUriFunction
- extends Expr
- implements XPathFunction, Function
-{
-
- List args;
-
- public Object evaluate(List args)
- throws XPathFunctionException
- {
- // Useless...
- return Collections.EMPTY_SET;
- }
-
- public void setArguments(List args)
- {
- this.args = args;
- }
-
- public Object evaluate(Node context, int pos, int len)
- {
- int arity = args.size();
- List values = new ArrayList(arity);
- for (int i = 0; i < arity; i++)
- {
- Expr arg = (Expr) args.get(i);
- values.add(arg.evaluate(context, pos, len));
- }
- String name = _string(context, values.get(0));
- DocumentType doctype = context.getOwnerDocument().getDoctype();
- if (doctype != null)
- {
- NamedNodeMap notations = doctype.getNotations();
- Notation notation = (Notation) notations.getNamedItem(name);
- if (notation != null)
- {
- String systemId = notation.getSystemId();
- // XXX absolutize?
- if (systemId != null)
- {
- return systemId;
- }
- }
- }
- return "";
- }
-
- public Expr clone(Object context)
- {
- UnparsedEntityUriFunction f = new UnparsedEntityUriFunction();
- int len = args.size();
- List args2 = new ArrayList(len);
- for (int i = 0; i < len; i++)
- {
- args2.add(((Expr) args.get(i)).clone(context));
- }
- f.setArguments(args2);
- return f;
- }
-
-}
-
diff --git a/libjava/gnu/xml/transform/ValueOfNode.java b/libjava/gnu/xml/transform/ValueOfNode.java
deleted file mode 100644
index 88ab166911d..00000000000
--- a/libjava/gnu/xml/transform/ValueOfNode.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/* ValueOfNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing an XSLT <code>value-of</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class ValueOfNode
- extends TemplateNode
-{
-
- final Expr select;
- final boolean disableOutputEscaping;
-
- ValueOfNode(TemplateNode children, TemplateNode next, Expr select,
- boolean disableOutputEscaping)
- {
- super(children, next);
- this.select = select;
- this.disableOutputEscaping = disableOutputEscaping;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new ValueOfNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- select.clone(stylesheet),
- disableOutputEscaping);
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- Object ret = select.evaluate(context, pos, len);
- String value = Expr._string(context, ret);
- //System.err.println("value-of: "+context+" "+ select + " -> "+ value);
- if (value != null && value.length() > 0)
- {
- Document doc = (parent instanceof Document) ?
- (Document) parent : parent.getOwnerDocument();
- Text textNode = doc.createTextNode(value);
- if (disableOutputEscaping)
- {
- textNode.setUserData("disable-output-escaping", "yes", stylesheet);
- }
- if (nextSibling != null)
- {
- parent.insertBefore(textNode, nextSibling);
- }
- else
- {
- parent.appendChild(textNode);
- }
- }
- // value-of doesn't process children
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append("select=");
- buf.append(select);
- if (disableOutputEscaping)
- {
- buf.append(",disableOutputEscaping");
- }
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/WhenNode.java b/libjava/gnu/xml/transform/WhenNode.java
deleted file mode 100644
index 8c292fb279b..00000000000
--- a/libjava/gnu/xml/transform/WhenNode.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/* WhenNode.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * A template node representing an XSL <code>when</code> instruction.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class WhenNode
- extends TemplateNode
-{
-
- final Expr test;
-
- WhenNode(TemplateNode children, TemplateNode next, Expr test)
- {
- super(children, next);
- this.test = test;
- }
-
- TemplateNode clone(Stylesheet stylesheet)
- {
- return new WhenNode((children == null) ? null :
- children.clone(stylesheet),
- (next == null) ? null :
- next.clone(stylesheet),
- test.clone(stylesheet));
- }
-
- void doApply(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len,
- Node parent, Node nextSibling)
- throws TransformerException
- {
- Object ret = test.evaluate(context, pos, len);
- boolean success = (ret instanceof Boolean) ?
- ((Boolean) ret).booleanValue() :
- Expr._boolean(context, ret);
- if (success)
- {
- if (children != null)
- {
- children.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
- else
- {
- if (next != null)
- {
- next.apply(stylesheet, mode,
- context, pos, len,
- parent, nextSibling);
- }
- }
- }
-
- public String toString()
- {
- StringBuffer buf = new StringBuffer(getClass().getName());
- buf.append('[');
- buf.append("test=");
- buf.append(test);
- buf.append(']');
- return buf.toString();
- }
-
-}
diff --git a/libjava/gnu/xml/transform/WithParam.java b/libjava/gnu/xml/transform/WithParam.java
deleted file mode 100644
index 7c3379833ce..00000000000
--- a/libjava/gnu/xml/transform/WithParam.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/* WithParam.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.Collections;
-import javax.xml.namespace.QName;
-import javax.xml.transform.TransformerException;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * A specification for setting a variable or parameter during template
- * processing with <code>apply-templates</code> or
- * <code>call-template</code>.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-final class WithParam
-{
-
- final String name;
- final Expr select;
- final TemplateNode content;
-
- WithParam(String name, Expr select)
- {
- this.name = name;
- this.select = select;
- content = null;
- }
-
- WithParam(String name, TemplateNode content)
- {
- this.name = name;
- this.content = content;
- select = null;
- }
-
- Object getValue(Stylesheet stylesheet, QName mode,
- Node context, int pos, int len)
- throws TransformerException
- {
- if (select != null)
- {
- return select.evaluate(context, pos, len);
- }
- else
- {
- Document doc = (context instanceof Document) ? (Document) context :
- context.getOwnerDocument();
- DocumentFragment fragment = doc.createDocumentFragment();
- content.apply(stylesheet, mode,
- context, pos, len,
- fragment, null);
- return Collections.singleton(fragment);
- }
- }
-
- WithParam clone(Stylesheet stylesheet)
- {
- if (content == null)
- {
- return new WithParam(name,
- select.clone(stylesheet));
- }
- else
- {
- return new WithParam(name,
- content.clone(stylesheet));
- }
- }
-
-}
diff --git a/libjava/gnu/xml/transform/XSLComparator.java b/libjava/gnu/xml/transform/XSLComparator.java
deleted file mode 100644
index 222f370c8b9..00000000000
--- a/libjava/gnu/xml/transform/XSLComparator.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/* XSLComparator.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.text.Collator;
-import org.w3c.dom.Node;
-import gnu.xml.xpath.Expr;
-
-/**
- * Comparator for sorting lists of nodes according to a list of sort keys.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class XSLComparator
- implements Comparator
-{
-
- final List sortKeys;
-
- XSLComparator(List sortKeys)
- {
- this.sortKeys = sortKeys;
- }
-
- public int compare(Object o1, Object o2)
- {
- if (o1 instanceof Node && o2 instanceof Node)
- {
- Node n1 = (Node) o1;
- Node n2 = (Node) o2;
- for (Iterator i = sortKeys.iterator(); i.hasNext(); )
- {
- SortKey sortKey = (SortKey) i.next();
- String k1 = sortKey.key(n1);
- String k2 = sortKey.key(n2);
- if ("text".equals(sortKey.dataType))
- {
- Locale locale = (sortKey.lang == null) ? Locale.getDefault() :
- new Locale(sortKey.lang);
- Collator collator = Collator.getInstance(locale);
- int d = collator.compare(k1, k2);
- if (d != 0)
- {
- switch (sortKey.caseOrder)
- {
- case SortKey.UPPER_FIRST:
- // TODO
- break;
- case SortKey.LOWER_FIRST:
- // TODO
- break;
- }
- if (sortKey.descending)
- {
- d = -d;
- }
- return d;
- }
- }
- else if ("number".equals(sortKey.dataType))
- {
- double kn1 = Expr._number(n1, k1);
- double kn2 = Expr._number(n2, k2);
- int d;
- if (Double.isNaN(kn1) || Double.isInfinite(kn2))
- {
- d = -1;
- }
- else if (Double.isNaN(kn2) || Double.isInfinite(kn1))
- {
- d = 1;
- }
- else
- {
- // conversion to int may give 0 for small numbers
- d = (kn1 > kn2) ? 1 : (kn1 < kn2) ? -1 : 0;
- }
- return (sortKey.descending) ? -d : d;
- }
- }
- }
- return 0;
- }
-
-}
diff --git a/libjava/gnu/xml/transform/XSLURIResolver.java b/libjava/gnu/xml/transform/XSLURIResolver.java
deleted file mode 100644
index 2e4e6545a87..00000000000
--- a/libjava/gnu/xml/transform/XSLURIResolver.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/* XSLURIResolver.java --
- Copyright (C) 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.xml.transform;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.Reader;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.HashMap;
-import java.util.Map;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.ErrorListener;
-import javax.xml.transform.Source;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.URIResolver;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamSource;
-import org.w3c.dom.Node;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import gnu.xml.dom.ls.ReaderInputStream;
-
-/**
- * URI resolver for XSLT.
- * This resolver parses external entities into DOMSources. It
- * maintains a cache of URIs to DOMSources to avoid expensive re-parsing.
- *
- * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
- */
-class XSLURIResolver
- implements URIResolver
-{
-
- Map lastModifiedCache = new HashMap();
- Map nodeCache = new HashMap();
- DocumentBuilder builder;
- URIResolver userResolver;
- ErrorListener userListener;
-
- void setUserResolver(URIResolver userResolver)
- {
- this.userResolver = userResolver;
- }
-
- void setUserListener(ErrorListener userListener)
- {
- this.userListener = userListener;
- }
-
- /**
- * Clear the cache.
- */
- void flush()
- {
- lastModifiedCache.clear();
- nodeCache.clear();
- }
-
- public Source resolve(String href, String base)
- throws TransformerException
- {
- Source source = null;
- if (userResolver != null)
- {
- source = userResolver.resolve(base, href);
- }
- return resolveDOM(source, href, base);
- }
-
- DOMSource resolveDOM(Source source, String base, String href)
- throws TransformerException
- {
- if (source != null && source instanceof DOMSource)
- {
- return (DOMSource) source;
- }
- String systemId = (source == null) ? null : source.getSystemId();
- long lastModified = 0L, lastLastModified = 0L;
-
- try
- {
- URL url = resolveURL(systemId, base, href);
- Node node = null;
- InputStream in = null;
- if (source instanceof StreamSource)
- {
- StreamSource ss = (StreamSource) source;
- in = ss.getInputStream();
- if (in == null)
- {
- Reader reader = ss.getReader();
- if (reader != null)
- {
- in = new ReaderInputStream(reader);
- }
- }
- }
- if (in == null && url != null)
- {
- systemId = url.toString();
- node = (Node) nodeCache.get(systemId);
- // Is the resource up to date?
- URLConnection conn = url.openConnection();
- Long llm = (Long) lastModifiedCache.get(systemId);
- if (llm != null)
- {
- lastLastModified = llm.longValue();
- conn.setIfModifiedSince(lastLastModified);
- }
- conn.connect();
- lastModified = conn.getLastModified();
- if (node != null &&
- lastModified > 0L &&
- lastModified <= lastLastModified)
- {
- // Resource unchanged
- return new DOMSource(node, systemId);
- }
- else
- {
- // Resource new or modified
- in = conn.getInputStream();
- nodeCache.put(systemId, node);
- lastModifiedCache.put(systemId, new Long(lastModified));
- }
- }
- InputSource input = new InputSource(in);
- input.setSystemId(systemId);
- DocumentBuilder builder = getDocumentBuilder();
- node = builder.parse(input);
- return new DOMSource(node, systemId);
- }
- catch (IOException e)
- {
- throw new TransformerException(e);
- }
- catch (SAXException e)
- {
- throw new TransformerException(e);
- }
- }
-
- URL resolveURL(String systemId, String base, String href)
- throws IOException
- {
- URL url = null;
- try
- {
- if (systemId != null)
- {
- try
- {
- url = new URL(systemId);
- }
- catch (MalformedURLException e)
- {
- // Try building from base + href
- }
- }
- if (url == null)
- {
- if (base != null)
- {
- URL baseURL = new URL(base);
- url = new URL(baseURL, href);
- }
- else if (href != null)
- {
- url = new URL(href);
- }
- }
- return url;
- }
- catch (MalformedURLException e)
- {
- // Fall back to local filesystem
- File file = null;
- if (href == null)
- {
- href = systemId;
- }
- if (base != null)
- {
- int lsi = base.lastIndexOf(File.separatorChar);
- if (lsi != -1 && lsi < base.length() - 1)
- {
- base = base.substring(0, lsi);
- }
- File baseFile = new File(base);
- file = new File(baseFile, href);
- }
- else if (href != null)
- {
- file = new File(href);
- }
- return (file == null) ? null : file.toURL();
- }
- }
-
- DocumentBuilder getDocumentBuilder()
- throws TransformerException
- {
- try
- {
- if (builder == null)
- {
- DocumentBuilderFactory factory =
- DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- factory.setExpandEntityReferences(true);
- builder = factory.newDocumentBuilder();
- }
- if (userResolver != null)
- {
- builder.setEntityResolver(new URIResolverEntityResolver(userResolver));
- }
- if (userListener != null)
- {
- builder.setErrorHandler(new ErrorListenerErrorHandler(userListener));
- }
- return builder;
- }
- catch (Exception e)
- {
- throw new TransformerException(e);
- }
- }
-
-}
-
OpenPOWER on IntegriCloud