// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3) fieldsfirst lnc
// Source File Name: XSLForEach.java
package com.icl.saxon.style;
import com.icl.saxon.Context;
import com.icl.saxon.Controller;
import com.icl.saxon.expr.*;
import com.icl.saxon.om.NodeEnumeration;
import com.icl.saxon.trace.TraceListener;
import com.icl.saxon.tree.AttributeCollection;
import com.icl.saxon.tree.ElementWithAttributes;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
// Referenced classes of package com.icl.saxon.style:
// StyleElement, StandardNames
public class XSLForEach extends StyleElement
{
Expression select;
public XSLForEach()
{
/* 20*/ select = null;
}
public boolean isInstruction()
{
/* 28*/ return true;
}
public boolean mayContainTemplateBody()
{
/* 37*/ return true;
}
public void prepareAttributes()
throws TransformerConfigurationException
{
/* 42*/ StandardNames standardnames = getStandardNames();
/* 43*/ AttributeCollection attributecollection = getAttributeList();
/* 45*/ String s = null;
/* 47*/ for(int i = 0; i < attributecollection.getLength(); i++)
{
/* 48*/ int j = attributecollection.getNameCode(i);
/* 49*/ int k = j & 0xfffff;
/* 50*/ if(k == standardnames.SELECT)
/* 51*/ s = attributecollection.getValue(i);
/* 53*/ else
/* 53*/ checkUnknownAttribute(j);
}
/* 57*/ if(s == null)
/* 58*/ reportAbsence("select");
/* 60*/ else
/* 60*/ select = makeExpression(s);
}
public void validate()
throws TransformerConfigurationException
{
/* 66*/ checkWithinTemplate();
/* 67*/ select = handleSortKeys(select);
}
public void process(Context context)
throws TransformerException
{
/* 72*/ XSLTemplate xsltemplate = context.getCurrentTemplate();
/* 73*/ context.setCurrentTemplate(null);
/* 74*/ Object obj = select.enumerate(context, false);
/* 75*/ if(!(obj instanceof LastPositionFinder))
/* 76*/ obj = new LookaheadEnumerator(((NodeEnumeration) (obj)));
/* 79*/ Context context1 = context.newContext();
/* 80*/ context1.setLastPositionFinder((LastPositionFinder)obj);
/* 81*/ int i = 1;
/* 83*/ if(context.getController().isTracing())
{
/* 84*/ TraceListener tracelistener = context.getController().getTraceListener();
/* 86*/ for(; ((NodeEnumeration) (obj)).hasMoreElements(); context.setReturnValue(context1.getReturnValue()))
{
/* 86*/ com.icl.saxon.om.NodeInfo nodeinfo1 = ((NodeEnumeration) (obj)).nextElement();
/* 87*/ context1.setPosition(i++);
/* 88*/ context1.setCurrentNode(nodeinfo1);
/* 89*/ context1.setContextNode(nodeinfo1);
/* 90*/ tracelistener.enterSource(null, context1);
/* 91*/ processChildren(context1);
/* 92*/ tracelistener.leaveSource(null, context1);
}
} else
{
/* 97*/ for(; ((NodeEnumeration) (obj)).hasMoreElements(); context.setReturnValue(context1.getReturnValue()))
{
/* 97*/ com.icl.saxon.om.NodeInfo nodeinfo = ((NodeEnumeration) (obj)).nextElement();
/* 98*/ context1.setPosition(i++);
/* 99*/ context1.setCurrentNode(nodeinfo);
/* 100*/ context1.setContextNode(nodeinfo);
/* 101*/ processChildren(context1);
}
}
/* 105*/ context.setCurrentTemplate(xsltemplate);
}
}