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.