fix xalan xpath bugs
This commit is contained in:
		| @@ -18,6 +18,10 @@ import javax.xml.transform.stream.StreamSource; | ||||
| import javax.xml.validation.Schema; | ||||
| import javax.xml.validation.SchemaFactory; | ||||
| import javax.xml.validation.Validator; | ||||
| import javax.xml.xpath.XPath; | ||||
| import javax.xml.xpath.XPathConstants; | ||||
| import javax.xml.xpath.XPathExpression; | ||||
| import javax.xml.xpath.XPathFactory; | ||||
| import java.io.ByteArrayOutputStream; | ||||
| import java.io.OutputStreamWriter; | ||||
| import java.io.StringReader; | ||||
| @@ -61,6 +65,13 @@ public class Xalan implements XmlEngine{ | ||||
|         return nodeType == Node.CDATA_SECTION_NODE || nodeType == Node.TEXT_NODE; | ||||
|     } | ||||
|  | ||||
|     private boolean isAttributeNode(Node n) { | ||||
|         if (n == null) | ||||
|             return false; | ||||
|         short nodeType = n.getNodeType(); | ||||
|         return nodeType == Node.CDATA_SECTION_NODE || nodeType == Node.ATTRIBUTE_NODE; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String processXSLT(XMLMultipleFilesData[] data, String transform) throws Exception { | ||||
|         throw new UnsupportedOperationException("Xalan does not support multiple files XSLT processing"); | ||||
| @@ -101,7 +112,10 @@ public class Xalan implements XmlEngine{ | ||||
|                     for (Node nn = n.getNextSibling(); isTextNode(nn); nn = nn.getNextSibling()) { | ||||
|                         resultString.append(nn.getNodeValue()); | ||||
|                     } | ||||
|                 } else { | ||||
|                 } else if (isAttributeNode(n)) { | ||||
|                     resultString.append(n.getNodeValue()); | ||||
|                 } | ||||
|                 else { | ||||
|                     ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); | ||||
|                     serializer.transform(new DOMSource(n), new StreamResult(new OutputStreamWriter(outputStream))); | ||||
|                     resultString.append(outputStream); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user