elena 2004/02/12 09:36:34
Modified: java/src/org/apache/xml/serialize XMLSerializer.java
Log:
Per latest LS draft, attribute nodes must be passed to a filter.
Revision Changes Path
1.58 +19 -5 xml-xerces/java/src/org/apache/xml/serialize/XMLSerializer.java
Index: XMLSerializer.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xml/serialize/XMLSerializer.java,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- XMLSerializer.java 10 Feb 2004 17:25:27 -0000 1.57
+++ XMLSerializer.java 12 Feb 2004 17:36:33 -0000 1.58
@@ -90,6 +90,7 @@
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
+import org.w3c.dom.traversal.NodeFilter;
import org.xml.sax.AttributeList;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
@@ -1061,7 +1062,7 @@
// change prefix for this attribute
}
- printAttribute (name,
(value==null)?XMLSymbols.EMPTY_STRING:value, attr.getSpecified());
+ printAttribute (name,
(value==null)?XMLSymbols.EMPTY_STRING:value, attr.getSpecified(), attr);
} else { // attribute uri == null
if (attr.getLocalName() == null) {
if (fDOMErrorHandler != null) {
@@ -1078,12 +1079,12 @@
"SerializationStopped", null));
}
}
- printAttribute (name, value, attr.getSpecified());
+ printAttribute (name, value, attr.getSpecified(), attr);
} else { // uri=null and no colon
// no fix up is needed: default namespace decl does not
// apply to attributes
- printAttribute (name, value, attr.getSpecified());
+ printAttribute (name, value, attr.getSpecified(), attr);
}
}
} // end loop for attributes
@@ -1166,9 +1167,22 @@
* @param isSpecified
* @exception IOException
*/
- private void printAttribute (String name, String value, boolean isSpecified)
throws IOException{
+ private void printAttribute (String name, String value, boolean isSpecified,
Attr attr) throws IOException{
if (isSpecified || (features & DOMSerializerImpl.DISCARDDEFAULT) != 0) {
+ if (fDOMFilter !=null &&
+ (fDOMFilter.getWhatToShow() & NodeFilter.SHOW_ATTRIBUTE)!= 0) {
+ short code = fDOMFilter.acceptNode(attr);
+ switch (code) {
+ case NodeFilter.FILTER_REJECT:
+ case NodeFilter.FILTER_SKIP: {
+ return;
+ }
+ default: {
+ // fall through
+ }
+ }
+ }
_printer.printSpace();
_printer.printText( name );
_printer.printText( "=\"" );
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]