--- /dev/null Mon Nov 17 20:10:00 2014 +++ new/test/javax/xml/jaxp/unittest/javax/xml/transform/Bug6384805.java Mon Nov 17 20:09:59 2014 @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.transform; + +import java.util.Iterator; + +import javax.xml.namespace.NamespaceContext; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMResult; +import javax.xml.transform.stream.StreamSource; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathFactory; + +import org.testng.Assert; +import org.testng.annotations.Test; + +/* + * @bug 6384805 + * @summary Test XSLTC can parse XML namespace when nodeset is created within a template. + */ +public class Bug6384805 { + + @Test + public void test0() { + try { + TransformerFactory tf = TransformerFactory.newInstance(); + + try { + // tf.setAttribute("generate-translet", Boolean.TRUE); + } catch (IllegalArgumentException e) { + // ignore + } + + Transformer t = tf.newTransformer(new StreamSource(getClass().getResourceAsStream("tigertest.xsl"), getClass().getResource("tigertest.xsl") + .toString())); + + StreamSource src = new StreamSource(getClass().getResourceAsStream("tigertest-in.xml")); + DOMResult res = new DOMResult(); + t.transform(src, res); + + // Verify output of transformation + XPath query = XPathFactory.newInstance().newXPath(); + + query.setNamespaceContext(new NamespaceContext() { + public String getNamespaceURI(String prefix) { + return prefix.equals("style") ? "http://openoffice.org/2000/style" : prefix.equals("office") ? "http://openoffice.org/2000/office" : null; + } + + public String getPrefix(String namespaceURI) { + return null; + } + + public Iterator getPrefixes(String namespaceURI) { + return null; + } + }); + + // Find the value of the style:family attribute + Object o1 = query.evaluate("/test/office:document/office:styles/style:default-style/@style:family", res.getNode(), XPathConstants.STRING); + + Assert.assertTrue(o1.equals("graphics")); + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + } + +}