1 28 29 package com.caucho.jsp.java; 30 31 import com.caucho.jsp.JspParseException; 32 import com.caucho.vfs.WriteStream; 33 import com.caucho.xml.QName; 34 35 import java.io.IOException ; 36 37 public class JstlXmlOut extends JstlNode { 38 private static final QName SELECT = new QName("select"); 39 private static final QName ESCAPE_XML = new QName("escapeXml"); 40 41 private String _select; 42 43 private String _escapeXml = "true"; 44 private JspAttribute _escapeXmlAttr; 45 46 49 public void addAttribute(QName name, String value) 50 throws JspParseException 51 { 52 if (SELECT.equals(name)) 53 _select = value; 54 else if (ESCAPE_XML.equals(name)) 55 _escapeXml = value; 56 else 57 throw error(L.l("`{0}' is an unknown attribute for <{1}>.", 58 name.getName(), getTagName())); 59 } 60 61 64 public void addAttribute(QName name, JspAttribute value) 65 throws JspParseException 66 { 67 if (ESCAPE_XML.equals(name)) 68 _escapeXmlAttr = value; 69 else 70 throw error(L.l("`{0}' is an unknown attribute for <{1}>.", 71 name.getName(), getTagName())); 72 } 73 74 79 public void printXml(WriteStream os) 80 throws IOException 81 { 82 os.print("<x:out"); 83 84 if (_select != null) { 85 os.print(" select=\""); 86 printXmlText(os, _select); 87 os.print("\""); 88 } 89 os.print("/>"); 90 } 91 92 95 public void generate(JspJavaWriter out) 96 throws Exception 97 { 98 if (_select == null) 99 throw error(L.l("required attribute `select' missing from <{0}>", 100 getTagName())); 101 102 String select = _gen.addXPathExpr(_select, getNamespaceContext()); 103 104 String escapeXml = "true"; 105 106 if (_escapeXml != null) 107 escapeXml = generateValue(boolean.class, _escapeXml); 108 else if (_escapeXmlAttr != null) 109 escapeXml = _escapeXmlAttr.generateValue(String .class); 110 111 out.println("com.caucho.jstl.el.XmlOutTag.toStream(out, pageContext, " + select + ", " + escapeXml + ");"); 112 } 113 } 114 | Popular Tags |