You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by tm...@apache.org on 2002/03/18 19:44:28 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/runtime TextOutput.java
tmiller 02/03/18 10:44:28
Modified: java/src/org/apache/xalan/xsltc/runtime TextOutput.java
Log:
bug 6935, fixed char escaping in non-URL HTML
attribute case; also added recognition for URL escaping in HTML4 cite attrs.
Revision Changes Path
1.50 +31 -4 xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TextOutput.java
Index: TextOutput.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TextOutput.java,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -r1.49 -r1.50
--- TextOutput.java 7 Feb 2002 16:29:28 -0000 1.49
+++ TextOutput.java 18 Mar 2002 18:44:28 -0000 1.50
@@ -1,5 +1,5 @@
/*
- * @(#)$Id: TextOutput.java,v 1.49 2002/02/07 16:29:28 tmiller Exp $
+ * @(#)$Id: TextOutput.java,v 1.50 2002/03/18 18:44:28 tmiller Exp $
*
* The Apache Software License, Version 1.1
*
@@ -126,6 +126,7 @@
private static final String EMPTYSTRING = "";
private static final String HREF_STR = "href";
+ private static final String CITE_STR = "cite";
private static final String SRC_STR = "str";
private static final String CHAR_ESC_START = "&#";
private static final String CDATA_ESC_START = "]]>&#";
@@ -828,15 +829,41 @@
// URL-encode href attributes in HTML output
final String tmp = name.toLowerCase();
- if (tmp.equals(HREF_STR) || tmp.equals(SRC_STR)) {
- _attributes.add(name,quickAndDirtyUrlEncode(escapeAttr(value)));
+ if (tmp.equals(HREF_STR) || tmp.equals(SRC_STR) ||
+ tmp.equals(CITE_STR)) {
+ _attributes.add(name,
+ quickAndDirtyUrlEncode(escapeAttr(value)));
}
else {
- _attributes.add(expandAttribute(name), escapeAttr(value));
+ _attributes.add(expandAttribute(name),
+ escapeNonURLAttr(value));
}
return;
}
}
+
+ /**
+ * Escape non ASCII characters (> u007F) as &#XXX; entities.
+ */
+ private String escapeNonURLAttr(String base) {
+ final int len = base.length() - 1;
+
+ char[] ch = base.toCharArray();
+ StringBuffer buf = new StringBuffer();
+ for(int i=0; i<base.length(); i++){
+ if (ch[i] > '\u007F') {
+ buf.append(CHAR_ESC_START);
+ buf.append(Integer.toString((int)ch[i]));
+ buf.append(';');
+ }
+ else {
+ buf.append(ch[i]);
+ }
+ }
+ base = buf.toString();
+ return base;
+ }
+
/**
* End an element or CDATA section in the output document
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org