Package com.sun.msv.schematron.reader

Source Code of com.sun.msv.schematron.reader.SRuleState

package com.sun.msv.schematron.reader;

import java.util.Vector;

import javax.xml.transform.TransformerException;

import org.apache.xpath.XPath;

import com.sun.msv.reader.SimpleState;
import com.sun.msv.reader.State;
import com.sun.msv.schematron.grammar.SAction;
import com.sun.msv.schematron.grammar.SRule;
import com.sun.msv.util.StartTagInfo;

public class SRuleState extends SimpleState implements SActionReceiver {
 
  protected State createChildState( StartTagInfo tag ) {
   
    if(!tag.namespaceURI.equals(SRELAXNGReader.SchematronURI))
      return null;

    if( tag.localName.equals("assert") )
      return new SActionState.SAssertState();
    if( tag.localName.equals("report") )
      return new SActionState.SReportState();
    return null;
  }

  private final Vector asserts = new Vector();
  public void onAssert( SAction action ) {
    asserts.add(action);
  }
  private final Vector reports = new Vector();
  public void onReport( SAction action ) {
    reports.add(action);
  }
 
  public void endSelf() {
    SRELAXNGReader reader = (SRELAXNGReader)this.reader;
   
    String context = startTag.getAttribute("context");
   
    if(context!=null) {
      try {
                XPath xpath = new XPath(context,null,new PrefixResolverImpl(this), XPath.MATCH);
               
                ((SRuleReceiver)parentState).onRule(new SRule(xpath,asserts,reports));
      } catch( TransformerException e ) {
        reader.reportError( SRELAXNGReader.ERR_INVALID_XPATH, context, e.getMessage() );
      }
    } else {
      reader.reportError( SRELAXNGReader.ERR_MISSING_ATTRIBUTE, startTag.qName, "context" );
    }
   
    super.endSelf();
  }
}
TOP

Related Classes of com.sun.msv.schematron.reader.SRuleState

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.