コード例 #1
0
 void doApply(
     Stylesheet stylesheet,
     QName mode,
     Node context,
     int pos,
     int len,
     Node parent,
     Node nextSibling)
     throws TransformerException {
   if (children != null) {
     // Set current template to null
     Template saved = stylesheet.currentTemplate;
     stylesheet.currentTemplate = null;
     Object ret = select.evaluate(context, pos, len);
     // System.err.println(toString() + ": " + context+" -> "+ret);
     if (ret instanceof Collection) {
       Collection ns = (Collection) ret;
       List list = new ArrayList(ns);
       if (sortKeys != null) {
         for (Iterator i = sortKeys.iterator(); i.hasNext(); ) {
           SortKey sortKey = (SortKey) i.next();
           sortKey.init(stylesheet, mode, context, pos, len, parent, nextSibling);
         }
         Collections.sort(list, new XSLComparator(sortKeys));
       } else {
         Collections.sort(list, documentOrderComparator);
       }
       // Perform children for each node
       int l = list.size();
       int p = 1;
       for (Iterator i = list.iterator(); i.hasNext(); ) {
         Node node = (Node) i.next();
         stylesheet.current = node;
         children.apply(stylesheet, mode, node, p++, l, parent, nextSibling);
       }
     }
     // Restore current template
     stylesheet.currentTemplate = saved;
   }
   if (next != null) {
     next.apply(stylesheet, mode, context, pos, len, parent, nextSibling);
   }
 }