/** * Creates a new literal attribute (but does not insert it into the AST). * @param name the attribute name (incl. prefix) as a String. * @param value the attribute value. * @param parser the XSLT parser (wraps XPath parser). */ public LiteralAttribute(String name, String value, Parser parser, SyntaxTreeNode parent) { _name = name; setParent(parent); _value = AttributeValue.create(this, value, parser); }
protected boolean contextDependent() { return _value.contextDependent(); }
public static final AttributeValue create(SyntaxTreeNode parent, String text, Parser parser) { AttributeValue result; if (text.indexOf('{') != -1) { result = new AttributeValueTemplate(text, parser, parent); } else if (text.indexOf('}') != -1) { result = new AttributeValueTemplate(text, parser, parent); } else { result = new SimpleAttributeValue(text); result.setParser(parser); result.setParent(parent); } return result; } }
/** * These two methods are needed in the static methods that compile the * overloaded NodeSortRecord.compareType() and NodeSortRecord.sortOrder() */ public void translateSortType(ClassGenerator classGen, MethodGenerator methodGen) { _dataType.translate(classGen, methodGen); }
/** * Run type checks on the attributes; expression must return a string * which we will use as a sort key */ public Type typeCheck(SymbolTable stable) throws TypeCheckError { final Type tselect = _select.typeCheck(stable); // If the sort data-type is not set we use the natural data-type // of the data we will sort if (!(tselect instanceof StringType)) { _select = new CastExpr(_select, Type.String); } _order.typeCheck(stable); _caseOrder.typeCheck(stable); _dataType.typeCheck(stable); _lang.typeCheck(stable); return Type.Void; }
public void translateCaseOrder(ClassGenerator classGen, MethodGenerator methodGen) { _caseOrder.translate(classGen, methodGen); }
public Type typeCheck(SymbolTable stable) throws TypeCheckError { _name.typeCheck(stable); typeCheckContents(stable); return Type.Void; }
/** * Parse the contents of this <xsltc:output> element. The only attribute * we recognise is the 'file' attribute that contains teh output filename. */ public void parseContents(Parser parser) { // Get the output filename from the 'file' attribute String filename = getAttribute("file"); // If the 'append' attribute is set to "yes" or "true", // the output is appended to the file. String append = getAttribute("append"); // Verify that the filename is in fact set if ((filename == null) || (filename.equals(EMPTYSTRING))) { reportError(this, parser, ErrorMsg.REQUIRED_ATTR_ERR, "file"); } // Save filename as an attribute value template _filename = AttributeValue.create(this, filename, parser); if (append != null && (append.toLowerCase().equals("yes") || append.toLowerCase().equals("true"))) { _append = true; } else _append = false; parseChildren(parser); }
public void translateSortOrder(ClassGenerator classGen, MethodGenerator methodGen) { _order.translate(classGen, methodGen); }
public Type typeCheck(SymbolTable stable) throws TypeCheckError { _value.typeCheck(stable); typeCheckContents(stable); return Type.Void; }
public static final AttributeValue create(SyntaxTreeNode parent, String text, Parser parser) { AttributeValue result; if (text.indexOf('{') != -1) { result = new AttributeValueTemplate(text, parser, parent); } else if (text.indexOf('}') != -1) { result = new AttributeValueTemplate(text, parser, parent); } else { result = new SimpleAttributeValue(text); result.setParser(parser); result.setParent(parent); } return result; } }
protected boolean contextDependent() { return _value.contextDependent(); }
public void translateLang(ClassGenerator classGen, MethodGenerator methodGen) { _lang.translate(classGen, methodGen); }
public Type typeCheck(SymbolTable stable) throws TypeCheckError { if (!_ignore) { _name.typeCheck(stable); if (_namespace != null) { _namespace.typeCheck(stable); } typeCheckContents(stable); } return Type.Void; }
public void parseContents(Parser parser) { final String name = getAttribute("name"); if (name.length() > 0) { _isLiteral = Util.isLiteral(name); if (_isLiteral) { if (!XML11Char.isXML11ValidNCName(name)) { ErrorMsg err = new ErrorMsg(ErrorMsg.INVALID_NCNAME_ERR, name, this); parser.reportError(Constants.ERROR, err); } } _name = AttributeValue.create(this, name, parser); } else reportError(this, parser, ErrorMsg.REQUIRED_ATTR_ERR, "name"); if (name.equals("xml")) { reportError(this, parser, ErrorMsg.ILLEGAL_PI_ERR, "xml"); } parseChildren(parser); }
_value.translate(classGen, methodGen);
/** * Run type checks on the attributes; expression must return a string * which we will use as a sort key */ public Type typeCheck(SymbolTable stable) throws TypeCheckError { final Type tselect = _select.typeCheck(stable); // If the sort data-type is not set we use the natural data-type // of the data we will sort if (!(tselect instanceof StringType)) { _select = new CastExpr(_select, Type.String); } _order.typeCheck(stable); _caseOrder.typeCheck(stable); _dataType.typeCheck(stable); _lang.typeCheck(stable); return Type.Void; }
_name = AttributeValue.create(this, name, parser); parseChildren(parser);