1 28 29 package com.caucho.xsl.java; 30 31 import com.caucho.java.JavaWriter; 32 import com.caucho.xml.QName; 33 import com.caucho.xsl.XslParseException; 34 35 import java.util.ArrayList ; 36 37 40 public class XslAttribute extends XslNode { 41 private String _name; 42 private String _namespace; 43 44 47 public String getName() 48 { 49 return _name; 50 } 51 52 55 public String getValue() 56 { 57 ArrayList <XslNode> children = getChildren(); 58 59 if (children == null || children.size() == 0) 60 return ""; 61 62 XslNode node = children.get(0); 63 64 if (node instanceof TextNode) 65 return ((TextNode) node).getText(); 66 else 67 return ""; 68 } 69 70 73 public void addAttribute(QName name, String value) 74 throws XslParseException 75 { 76 if (name.getName().equals("name")) 77 _name = value; 78 else if (name.getName().equals("namespace")) 79 _namespace = value; 80 else 81 super.addAttribute(name, value); 82 } 83 84 87 public void endAttributes() 88 throws XslParseException 89 { 90 if (_name == null) 91 throw error(L.l("xsl:attribute needs a 'name' attribute.")); 92 } 93 94 99 public void generate(JavaWriter out) 100 throws Exception 101 { 102 if (hasChildren() || _namespace != null) { 103 String var = "_xsl_attr_" + generateId(); 104 105 out.print("XMLWriter " + var + " = "); 106 107 if (_namespace != null) { 108 out.print("out.pushAttributeNs("); 109 110 generateString(out, _name, '+'); 111 112 out.print(", "); 113 generateString(out, _namespace, '+'); 114 115 116 out.println(");"); 117 } 118 else { 119 out.print("out.pushAttribute("); 120 121 generateString(out, _name, '+'); 122 123 if (getOutputNamespace() != null) { 124 out.print(", "); 125 printNamespace(out, getOutputNamespace()); 126 } 127 128 out.println(");"); 129 } 130 131 generateChildren(out); 132 133 out.println("out.popAttribute(" + var + ");"); 134 } 135 else { 136 out.print("out.setAttribute("); 137 138 generateString(out, _name, '+'); 139 140 if (getOutputNamespace() != null) { 141 out.print(", "); 142 printNamespace(out, getOutputNamespace()); 143 } 144 145 out.println(", \"\");"); 146 } 147 } 148 } 149 | Popular Tags |