qelementdef.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 170 行

JAVA
170
字号
/* * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT.  See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the *   Free SoftwareFoundation, Inc. *   59 Temple Place, Suite 330 *   Boston, MA 02111-1307  USA * * @author Scott Ferguson */package com.caucho.xml2;import org.w3c.dom.Node;import javax.xml.namespace.QName;import java.io.IOException;import java.util.ArrayList;class QElementDef extends QNode {  String _name;  Object _content;  ArrayList<QAttributeDef> _attr;  boolean _hasDefault;  QDocumentType _dtd;  QElementDef(String name)  {    _name = name;  }  public String getNodeName() { return "#element"; }  public String getTagName() { return "#element"; }  public short getNodeType() { return Node.ELEMENT_NODE; }  Node importNode(QDocument owner, boolean deep)   {    QElementDef def = new QElementDef(_name);    return def;  }  public void addAttribute(String name, String type, ArrayList enumeration,			   String qualifier, String deflt)  {    if (_attr == null)      _attr = new ArrayList<QAttributeDef>();    if (deflt != null) {      _hasDefault = true;      _dtd.setAttributeDefaults();    }        _attr.add(new QAttributeDef(name, type, enumeration, qualifier, deflt));  }  void fillDefaults(QElement element)  {    if (! _hasDefault)      return;    for (int i = 0; i < _attr.size(); i++) {      QAttributeDef attrDef = _attr.get(i);      if (attrDef._deflt != null && 	  element.getAttribute(attrDef._name).equals("")) {	QAttr attr = (QAttr) element._owner.createAttribute(attrDef._name,							    attrDef._deflt);	attr._owner = element._owner;	attr.setSpecified(false);	element.setAttributeNode(attr);      }    }  }  void fillDefaults(QAttributes attributes)  {    if (! _hasDefault)      return;    for (int i = 0; i < _attr.size(); i++) {      QAttributeDef attrDef = _attr.get(i);      if (attrDef._deflt != null && 	  attributes.getIndex(attrDef._name) < 0) {	attributes.add(new QName(null, attrDef._name, null), attrDef._deflt);      }    }  }  public void print(XmlPrinter os) throws IOException  {    if (_content != null) {      os.print("<!ELEMENT ");      os.print(_name);      os.print(" ");      if (_content instanceof QContentParticle)	((QContentParticle) _content).print(os);      else	os.print(String.valueOf(_content));      os.println(">");    }    if (_attr != null) {      os.print("<!ATTLIST ");      os.print(_name);      for (int i = 0; i < _attr.size(); i++) {	QAttributeDef attribute = _attr.get(i);	if (_attr.size() == 1)	  os.print(" ");	else	  os.print("\n  ");	os.print(attribute._name);	if (attribute._type.equals("#ENUM")) {	  os.print(" (");	  for (int j = 0; j < attribute._enumeration.size(); j++) {	    String enumType = attribute._enumeration.get(j);	    if (j != 0)	      os.print(" | ");	    os.print(enumType);	  }	  os.print(")");	} else if (attribute._type.equals("NOTATION")) {	  os.print(" NOTATION (");	  for (int j = 0; j < attribute._enumeration.size(); j++) {	    String enumType = attribute._enumeration.get(j);	    if (j != 0)	      os.print(" | ");	    os.print(enumType);	  }	  os.print(")");	} else {	  os.print(" ");	  os.print(attribute._type);	}	if (attribute._qualifier != null) {	  os.print(" ");	  os.print(attribute._qualifier);	}	if (attribute._deflt != null) {	  os.print(" \"");	  os.print(attribute._deflt);	  os.print("\"");	}      }      os.println(">");    }  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?