sboag 00/10/04 18:38:39
Modified: java/src/org/apache/xalan/transformer TransformerImpl.java
java/src/org/apache/xalan/utils AttList.java TreeWalker.java
java/src/org/apache/xpath DOM2Helper.java DOMHelper.java
XPathContext.java
java/src/trax Examples.java
Log:
Fixed problem with resolving namespaces for DOM transformations.
Revision Changes Path
1.26 +2 -0
xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java
Index: TransformerImpl.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- TransformerImpl.java 2000/10/04 19:20:18 1.25
+++ TransformerImpl.java 2000/10/05 01:38:37 1.26
@@ -871,6 +871,8 @@
try
{
DocumentBuilderFactory dfactory =
DocumentBuilderFactory.newInstance();
+ dfactory.setNamespaceAware(true);
+ dfactory.setValidating(true);
m_docBuilder = dfactory.newDocumentBuilder();
}
catch(ParserConfigurationException pce)
1.3 +2 -1 xml-xalan/java/src/org/apache/xalan/utils/AttList.java
Index: AttList.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/utils/AttList.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AttList.java 2000/08/07 21:33:41 1.2
+++ AttList.java 2000/10/05 01:38:38 1.3
@@ -59,6 +59,7 @@
import org.w3c.dom.*;
import org.xml.sax.*;
import org.apache.xpath.DOMHelper;
+import org.apache.xpath.DOM2Helper;
/**
@@ -77,7 +78,7 @@
{
m_attrs = attrs;
m_lastIndex = m_attrs.getLength() - 1;
- m_dh = new DOMHelper();
+ m_dh = new DOM2Helper();
}
public AttList(NamedNodeMap attrs, DOMHelper dh)
1.6 +32 -2 xml-xalan/java/src/org/apache/xalan/utils/TreeWalker.java
Index: TreeWalker.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/utils/TreeWalker.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TreeWalker.java 2000/10/02 02:43:10 1.5
+++ TreeWalker.java 2000/10/05 01:38:38 1.6
@@ -76,7 +76,7 @@
// ARGHH!! JAXP Uses Xerces without setting the namespace processing to
ON!
// DOM2Helper m_dh = new DOM2Helper();
- DOMHelper m_dh = new DOMHelper();
+ DOMHelper m_dh = new DOM2Helper();
/**
* Get the ContentHandler used for the tree walk.
@@ -204,6 +204,21 @@
break;
case Node.ELEMENT_NODE:
NamedNodeMap atts = ((Element)node).getAttributes();
+ int nAttrs = atts.getLength();
+ for(int i = 0; i < nAttrs; i++)
+ {
+ Node attr = atts.item(i);
+ String attrName = attr.getNodeName();
+ if(attrName.equals("xmlns") || attrName.startsWith("xmlns:"))
+ {
+ int index;
+ String prefix
+ = (index = attrName.indexOf(":"))< 0
+ ? null : attrName.substring(index+1);
+ this.m_contentHandler.startPrefixMapping ( prefix,
+ attr.getNodeValue());
+ }
+ }
// System.out.println("m_dh.getNamespaceOfNode(node):
"+m_dh.getNamespaceOfNode(node));
// System.out.println("m_dh.getLocalNameOfNode(node):
"+m_dh.getLocalNameOfNode(node));
this.m_contentHandler.startElement (m_dh.getNamespaceOfNode(node),
@@ -297,7 +312,22 @@
break;
case Node.ELEMENT_NODE:
this.m_contentHandler.endElement("", "", node.getNodeName());
- break;
+ NamedNodeMap atts = ((Element)node).getAttributes();
+ int nAttrs = atts.getLength();
+ for(int i = 0; i < nAttrs; i++)
+ {
+ Node attr = atts.item(i);
+ String attrName = attr.getNodeName();
+ if(attrName.equals("xmlns") || attrName.startsWith("xmlns:"))
+ {
+ int index;
+ String prefix
+ = (index = attrName.indexOf(":"))< 0
+ ? null : attrName.substring(index+1);
+ this.m_contentHandler.endPrefixMapping(prefix);
+ }
+ }
+ break;
case Node.CDATA_SECTION_NODE:
break;
case Node.ENTITY_REFERENCE_NODE:
1.4 +3 -1 xml-xalan/java/src/org/apache/xpath/DOM2Helper.java
Index: DOM2Helper.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/DOM2Helper.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DOM2Helper.java 2000/10/02 02:43:14 1.3
+++ DOM2Helper.java 2000/10/05 01:38:38 1.4
@@ -159,6 +159,8 @@
// = new org.apache.xerces.parsers.DOMParser();
DocumentBuilderFactory builderFactory
= DocumentBuilderFactory.newInstance();
+ builderFactory.setNamespaceAware(true);
+ builderFactory.setValidating(true);
DocumentBuilder parser = builderFactory.newDocumentBuilder();
/*
@@ -242,7 +244,7 @@
return (Node.ATTRIBUTE_NODE == node.getNodeType())
? ((Attr)node).getOwnerElement() : node.getParentNode();
}
-
+
/**
* Returns the local name of the given node.
*/
1.5 +2 -0 xml-xalan/java/src/org/apache/xpath/DOMHelper.java
Index: DOMHelper.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/DOMHelper.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DOMHelper.java 2000/09/11 13:11:42 1.4
+++ DOMHelper.java 2000/10/05 01:38:38 1.5
@@ -27,6 +27,8 @@
// Use an implementation of the JAVA API for XML Parsing 1.0 to
// create a DOM Document node to contain the result.
DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+ dfactory.setNamespaceAware(true);
+ dfactory.setValidating(true);
DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
Document outNode = docBuilder.newDocument();
return outNode;
1.3 +1 -1 xml-xalan/java/src/org/apache/xpath/XPathContext.java
Index: XPathContext.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/XPathContext.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XPathContext.java 2000/07/30 22:44:36 1.2
+++ XPathContext.java 2000/10/05 01:38:38 1.3
@@ -226,7 +226,7 @@
public DOMHelper getDOMHelper()
{
if(null == m_domHelper)
- m_domHelper = new DOMHelper();
+ m_domHelper = new DOM2Helper();
return m_domHelper;
}
1.8 +2 -0 xml-xalan/java/src/trax/Examples.java
Index: Examples.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/trax/Examples.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- Examples.java 2000/10/02 02:43:24 1.7
+++ Examples.java 2000/10/05 01:38:39 1.8
@@ -259,6 +259,8 @@
Templates templates;
{
DocumentBuilderFactory dfactory =
DocumentBuilderFactory.newInstance();
+ dfactory.setNamespaceAware(true);
+ dfactory.setValidating(true);
DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
org.w3c.dom.Document outNode = docBuilder.newDocument();
Node doc = docBuilder.parse(new InputSource(xslID));