home *** CD-ROM | disk | FTP | other *** search
/ Online Today 2000 January / Onto0100.iso / pc / JAVA / MSJAVX86.EXE / xmldso.cab / com / ms / xml / parser / Terminal.class (.txt) < prev   
Encoding:
Java Class File  |  1998-11-05  |  2.8 KB  |  95 lines

  1. package com.ms.xml.parser;
  2.  
  3. import com.ms.xml.om.Element;
  4. import com.ms.xml.om.ElementImpl;
  5. import com.ms.xml.util.Atom;
  6. import com.ms.xml.util.Name;
  7. import com.ms.xml.util.XMLOutputStream;
  8. import java.io.IOException;
  9. import java.util.BitSet;
  10.  
  11. class Terminal extends Node {
  12.    int pos;
  13.    Name name;
  14.  
  15.    Terminal(ContentModel var1, Name var2) {
  16.       this.name = var2;
  17.       this.pos = var1.terminalnodes.size();
  18.       var1.terminalnodes.addElement(this);
  19.       if (var2 != null && var1.symboltable.get(var2) == null) {
  20.          var1.symboltable.put(var2, new Integer(var1.symbols.size()));
  21.          var1.symbols.addElement(var2);
  22.       }
  23.  
  24.    }
  25.  
  26.    BitSet firstpos(int var1) {
  27.       if (super.first == null) {
  28.          super.first = new BitSet(var1);
  29.          super.first.set(this.pos);
  30.       }
  31.  
  32.       return super.first;
  33.    }
  34.  
  35.    BitSet lastpos(int var1) {
  36.       if (super.last == null) {
  37.          super.last = new BitSet(var1);
  38.          super.last.set(this.pos);
  39.       }
  40.  
  41.       return super.last;
  42.    }
  43.  
  44.    Element toSchema(int var1, int var2, Element var3) {
  45.       if (this.name.getName() != Node.namePCDATA.getName()) {
  46.          ElementImpl var5 = new ElementImpl(Name.create("ELT", "XML"), 0);
  47.          var5.setAttribute(Name.create("HREF", "XML"), "#" + this.name);
  48.          if (var1 == 63) {
  49.             var5.setAttribute(Name.create("OCCURS", "XML"), "OPTIONAL");
  50.          } else if (var1 == 42) {
  51.             var5.setAttribute(Name.create("OCCURS", "XML"), "STAR");
  52.          } else if (var1 == 43) {
  53.             var5.setAttribute(Name.create("OCCURS", "XML"), "PLUS");
  54.          }
  55.  
  56.          var3.addChild(var5, (Element)null);
  57.          return var3;
  58.       } else if (var2 != 0 && (var2 != 1 || var1 != 42)) {
  59.          ElementImpl var4 = new ElementImpl(Name.create("MIXED", "XML"), 0);
  60.          var3.addChild(var4, (Element)null);
  61.          return var4;
  62.       } else {
  63.          var3.addChild(new ElementImpl(Name.create("PCDATA", "XML"), 0), (Element)null);
  64.          return var3;
  65.       }
  66.    }
  67.  
  68.    void save(XMLOutputStream var1, int var2, int var3, Atom var4) throws IOException {
  69.       if (this.name.getName() == Node.namePCDATA.getName()) {
  70.          if (var3 != 0 && (var3 != 1 || var2 != 42)) {
  71.             var1.writeChars("#PCDATA");
  72.          } else {
  73.             var1.writeChars("(#PCDATA)");
  74.          }
  75.       } else if (var2 != 35 && (var3 != 1 || var2 != 63 && var2 != 42)) {
  76.          var1.writeQualifiedName(this.name, var4);
  77.       } else {
  78.          var1.writeChars("(");
  79.          var1.writeQualifiedName(this.name, var4);
  80.          var1.writeChars(")");
  81.       }
  82.    }
  83.  
  84.    Node clone(ContentModel var1) {
  85.       return new Terminal(var1, this.name);
  86.    }
  87.  
  88.    void calcfollowpos(BitSet[] var1) {
  89.    }
  90.  
  91.    boolean nullable() {
  92.       return this.name == null;
  93.    }
  94. }
  95.