Package org.apache.xalan.transformer

Examples of org.apache.xalan.transformer.ResultTreeHandler


        didPushCurrent = true;
        if (child.isSupported(SaxEventDispatch.SUPPORTSINTERFACE, "1.0"))
        {
          if (m_disableOutputEscaping)
          {
            ResultTreeHandler rth = transformer.getResultTreeHandler();
            rth.processingInstruction(javax.xml.transform.Result.PI_DISABLE_OUTPUT_ESCAPING, "");
            ((SaxEventDispatch) child).dispatchCharactersEvent(rth);
            rth.processingInstruction(javax.xml.transform.Result.PI_ENABLE_OUTPUT_ESCAPING, "");
          }
          else
            ((SaxEventDispatch) child).dispatchCharactersEvent(transformer.getResultTreeHandler());
          return;
        }
        else
        {
          s = XNodeSet.getStringFromNode(child);
        }
      }
      else
      {
        s = value.str();
      }

     
      int len = (null != s) ? s.length() : 0;
      if(len > 0)
      {
        ResultTreeHandler rth = transformer.getResultTreeHandler();

        if (m_disableOutputEscaping)
        {
          rth.processingInstruction(javax.xml.transform.Result.PI_DISABLE_OUTPUT_ESCAPING, "");
          rth.characters(s.toCharArray(), 0, len);
          rth.processingInstruction(javax.xml.transform.Result.PI_ENABLE_OUTPUT_ESCAPING, "");
        }
        else
          rth.characters(s.toCharArray(), 0, len);
      }
    }
    catch(SAXException se)
    {
      throw new TransformerException(se);
View Full Code Here


      SourceLocator savedLocator = xctxt.getSAXLocator();

      xctxt.pushContextNodeList((ContextNodeList) sourceNodes);
      transformer.pushElemTemplateElement(null);

      ResultTreeHandler rth = transformer.getResultTreeHandler();
      StylesheetRoot sroot = getStylesheetRoot();
      TemplateList tl = sroot.getTemplateListComposed();

      // StylesheetComposed stylesheet = getStylesheetComposed();
      StackGuard guard = transformer.getStackGuard();
      boolean check = (guard.m_recursionLimit > -1);
      boolean quiet = transformer.getQuietConflictWarnings();
      boolean needToFindTemplate = (null == template);
     
      try
      {
        Node child;

        while (null != (child = sourceNodes.nextNode()))
        {
          if (needToFindTemplate)
          {
            template = tl.getTemplate(xctxt, child, mode, -1, quiet);

            // If that didn't locate a node, fall back to a default template rule.
            // See http://www.w3.org/TR/xslt#built-in-rule.
            if (null == template)
            {
              switch (child.getNodeType())
              {
              case Node.DOCUMENT_FRAGMENT_NODE :
              case Node.ELEMENT_NODE :
                template = sroot.getDefaultRule();
                break;
              case Node.ATTRIBUTE_NODE :
              case Node.CDATA_SECTION_NODE :
              case Node.TEXT_NODE :
                if (child.isSupported(SaxEventDispatch.SUPPORTSINTERFACE, "1.0"))
                {
                  ((SaxEventDispatch) child).dispatchCharactersEvent(rth);
                }
                else
                {
                  String data = child.getNodeValue();
                  rth.characters(data.toCharArray(), 0, data.length());
                }
                continue;
              case Node.DOCUMENT_NODE :
                template = sroot.getDefaultRootRule();
                break;
View Full Code Here

    try
    {
      if (null != m_prefixTable)
      {
        ResultTreeHandler rhandler = transformer.getResultTreeHandler();
        int n = m_prefixTable.size();

        for (int i = n - 1; i >= 0; i--)
        {
          XMLNSDecl decl = (XMLNSDecl) m_prefixTable.elementAt(i);

          if (!decl.getIsExcluded())
          {
            rhandler.startPrefixMapping(decl.getPrefix(), decl.getURI(), true);
          }
        }
      }
    }
    catch(org.xml.sax.SAXException se)
View Full Code Here

    try
    {
      if (null != m_prefixTable)
      {
        ResultTreeHandler rhandler = transformer.getResultTreeHandler();
        int n = m_prefixTable.size();

        for (int i = 0; i < n; i++)
        {
          XMLNSDecl decl = (XMLNSDecl) m_prefixTable.elementAt(i);

          if (!decl.getIsExcluded())
          {
            rhandler.endPrefixMapping(decl.getPrefix());
          }
        }
      }
    }
    catch(org.xml.sax.SAXException se)
View Full Code Here

      {
        if (child.isSupported(SaxEventDispatch.SUPPORTSINTERFACE, "1.0"))
        {
          if (m_disableOutputEscaping)
          {
            ResultTreeHandler rth = transformer.getResultTreeHandler();
            rth.processingInstruction(javax.xml.transform.Result.PI_DISABLE_OUTPUT_ESCAPING, "");
            ((SaxEventDispatch) child).dispatchCharactersEvent(rth);
            rth.processingInstruction(javax.xml.transform.Result.PI_ENABLE_OUTPUT_ESCAPING, "");
          }
          else
            ((SaxEventDispatch) child).dispatchCharactersEvent(transformer.getResultTreeHandler());
          return;
        }
        else
        {
          s = XNodeSet.getStringFromNode(child);
        }
      }
      else
        s = value.str();

     
      int len = (null != s) ? s.length() : 0;
      if(len > 0)
      {
        ResultTreeHandler rth = transformer.getResultTreeHandler();

        if (m_disableOutputEscaping)
        {
          rth.processingInstruction(javax.xml.transform.Result.PI_DISABLE_OUTPUT_ESCAPING, "");
          rth.characters(s.toCharArray(), 0, len);
          rth.processingInstruction(javax.xml.transform.Result.PI_ENABLE_OUTPUT_ESCAPING, "");
        }
        else
          rth.characters(s.toCharArray(), 0, len);
      }
    }
    catch(SAXException se)
    {
      throw new TransformerException(se);
View Full Code Here

    try
    {
      if (TransformerImpl.S_DEBUG)
        transformer.getTraceManager().fireTraceEvent(sourceNode, mode, this);

      ResultTreeHandler rhandler = transformer.getResultTreeHandler();
      XPathContext xctxt = transformer.getXPathContext();

      // The attribute name has to be evaluated as an AVT.
      String attrName = m_name_avt.evaluate(xctxt, sourceNode, this);
      String origAttrName = attrName;  // save original attribute name

      // Get the children of the xsl:attribute element as the string value.
      String val = transformer.transformToString(this, sourceNode, mode);

      // If they are trying to add an attribute when there isn't an
      // element pending, it is an error.
      if (!rhandler.isElementPending())
      {
        transformer.getMsgMgr().warn(this,
                                     XSLTErrorResources.WG_ILLEGAL_ATTRIBUTE_NAME,
                                     new Object[]{ origAttrName });

        return;

        // warn(templateChild, sourceNode, "Trying to add attribute after element child has been added, ignoring...");
      }

      if (null == attrName)
        return;

      String attrNameSpace = ""// by default

      // Did they declare a namespace attribute?
      if (null != m_namespace_avt)
      {

        // The namespace attribute is an AVT also.
        attrNameSpace = m_namespace_avt.evaluate(xctxt, sourceNode, this);

        if (null != attrNameSpace && attrNameSpace.length() > 0)
        {

          // Get the prefix for that attribute in the result namespace.
          String prefix = rhandler.getPrefix(attrNameSpace);

          // If we didn't find the prefix mapping, make up a prefix
          // and have it declared in the result tree.
          if (null == prefix)
          {
            prefix = rhandler.getNewUniqueNSPrefix();

            rhandler.startPrefixMapping(prefix, attrNameSpace, false);
          }

          // add the prefix to the attribute name.
          attrName = (prefix + ":" + QName.getLocalPart(attrName));
        }
      }

      // Is the attribute xmlns type?
      else if (QName.isXMLNSDecl(origAttrName))
      {

        // Then just declare the namespace prefix and get out.
        String prefix = QName.getPrefixFromXMLNSDecl(origAttrName);
        String ns = rhandler.getURI(prefix);

        if (null == ns)
          rhandler.startPrefixMapping(prefix, val, false);

        return;
      }

      // Note we are using original attribute name for these tests.
      else
      {

        // Does the attribute name have a prefix?
        String nsprefix = QName.getPrefixPart(origAttrName);

        if (null == nsprefix)
          nsprefix = "";

        // We're going to claim that this must be resolved in
        // the result tree namespace.
        try
        {
          attrNameSpace = getNamespaceForPrefix(nsprefix);
          // System.out.println("attrNameSpace: "+attrNameSpace);

          if ((null == attrNameSpace) && (nsprefix.length() > 0))
          {
            transformer.getMsgMgr().warn(this,
                                         XSLTErrorResources.WG_COULD_NOT_RESOLVE_PREFIX,
                                         new Object[]{ nsprefix });

            return;
          }
          else if(null == attrNameSpace)
            attrNameSpace = "";
        }
        catch (Exception ex)
        {

          // Could not resolve prefix

          transformer.getMsgMgr().warn(this,
                                       XSLTErrorResources.WG_COULD_NOT_RESOLVE_PREFIX,
                                       new Object[]{ nsprefix });

          return;
        }
      }

      String localName = QName.getLocalPart(attrName);
//      System.out.println("rhandler.addAttribute("+attrNameSpace+", "
//                                                 +localName+", "
//                                                 +attrName+", "
//                                                 +"CDATA"+", "
//                                                 +val+");");
      rhandler.addAttribute(attrNameSpace, localName, attrName, "CDATA", val);
    }
    catch(org.xml.sax.SAXException se)
    {
      throw new TransformerException(se);
    }
View Full Code Here

      SourceLocator savedLocator = xctxt.getSAXLocator();

      xctxt.pushContextNodeList((ContextNodeList) sourceNodes);
      transformer.pushElemTemplateElement(null);

      ResultTreeHandler rth = transformer.getResultTreeHandler();
      StylesheetRoot sroot = getStylesheetRoot();
      TemplateList tl = sroot.getTemplateListComposed();

      // StylesheetComposed stylesheet = getStylesheetComposed();
      StackGuard guard = transformer.getStackGuard();
      boolean check = (guard.m_recursionLimit > -1);
      boolean quiet = transformer.getQuietConflictWarnings();
      boolean needToFindTemplate = (null == template);
     
      try
      {
        Node child;

        while (null != (child = sourceNodes.nextNode()))
        {
          if (needToFindTemplate)
          {
            template = tl.getTemplate(xctxt, child, mode, -1, quiet);

            // If that didn't locate a node, fall back to a default template rule.
            // See http://www.w3.org/TR/xslt#built-in-rule.
            if (null == template)
            {
              switch (child.getNodeType())
              {
              case Node.DOCUMENT_FRAGMENT_NODE :
              case Node.ELEMENT_NODE :
                template = sroot.getDefaultRule();
                break;
              case Node.ATTRIBUTE_NODE :
              case Node.CDATA_SECTION_NODE :
              case Node.TEXT_NODE :
                if (child.isSupported(SaxEventDispatch.SUPPORTSINTERFACE, "1.0"))
                {
                  ((SaxEventDispatch) child).dispatchCharactersEvent(rth);
                }
                else
                {
                  String data = child.getNodeValue();
                  rth.characters(data.toCharArray(), 0, data.length());
                }
                continue;
              case Node.DOCUMENT_NODE :
                template = sroot.getDefaultRootRule();
                break;
View Full Code Here

  {
    try
    {

      boolean shouldAddAttrs = true;
      ResultTreeHandler rhandler = transformer.getResultTreeHandler();
      XPathContext xctxt = transformer.getXPathContext();
      String elemName = m_name_avt.evaluate(xctxt, sourceNode, this);

      // make sure that if a prefix is specified on the attribute name, it is valid
      int indexOfNSSep = elemName.indexOf(':');
      String prefix = null;
      String elemNameSpace = null;
      if(elemName.length() == 0)
        elemName = null;

      if ((null != elemName) /* && (indexOfNSSep >= 0) */)
      {
        prefix = (indexOfNSSep > 0) ? elemName.substring(0, indexOfNSSep) : "";

        // Catch the exception this may cause. We don't want to stop processing.
        try
        {
          elemNameSpace = getNamespaceForPrefix(prefix);
          if(null == elemNameSpace && indexOfNSSep <= 0)
            elemNameSpace = "";

          // Check if valid QName. Assuming that if the prefix is defined,
          // it is valid.
          int len = elemNameSpace.length();
          if ((len > 0 && ((indexOfNSSep + 1 == len)
              ||!isValidNCName(elemName.substring(indexOfNSSep + 1)))) ||
              ((indexOfNSSep <= 0) && !isValidNCName(elemName)))
          {
            transformer.getMsgMgr().warn(this,
                                         XSLTErrorResources.WG_ILLEGAL_ATTRIBUTE_NAME,
                                         new Object[]{ elemName });
            elemName = null;
          }
         
        }
        catch (Exception ex)
        {
          transformer.getMsgMgr().warn(this,
                                       XSLTErrorResources.WG_COULD_NOT_RESOLVE_PREFIX,
                                       new Object[]{ prefix });
          shouldAddAttrs = false;
          elemName = null;
        }
      }

      // Check if valid QName
      else if (null == elemName)
      {
        transformer.getMsgMgr().warn(this,
                                     XSLTErrorResources.WG_ILLEGAL_ATTRIBUTE_NAME,
                                     new Object[]{ elemName });

        elemName = null;
      }
      else if (elemName.length() == 0 ||!isValidNCName(elemName))
      {
        transformer.getMsgMgr().warn(this,
                                     XSLTErrorResources.WG_COULD_NOT_RESOLVE_PREFIX,
                                     new Object[]{ elemName });

        elemName = null;
      }

      if (null != elemName)
      {
        if (null != m_namespace_avt)
        {
          elemNameSpace = m_namespace_avt.evaluate(xctxt, sourceNode, this);
// System.out.println("elemNameSpace: "+elemNameSpace);
          if (null == elemNameSpace)
            elemNameSpace = "";
           
          if(null != prefix)
          {
            String nsPrefix = rhandler.getPrefix(elemNameSpace);
// System.out.println("nsPrefix: "+nsPrefix);          
            if (null == nsPrefix)
              nsPrefix = "";
             
//            if(!nsPrefix.equals(prefix))
//            {
//              prefix="";
//              elemName = QName.getLocalPart(elemName);
//            }           
          }
          if(null == prefix)
            prefix = "";
           
          if(prefix.length() > 0)
            elemName = (prefix + ":" + QName.getLocalPart(elemName));
        }
        else if(null != prefix && null == elemNameSpace)
        {
          transformer.getMsgMgr().warn(this,
                                       XSLTErrorResources.WG_COULD_NOT_RESOLVE_PREFIX,
                                       new Object[]{ prefix });
          elemName = null;
        }

        if(null != elemName)
        {
          // Add namespace declarations.
          executeNSDecls(transformer);
 
          if (null != prefix)
          {
            rhandler.startPrefixMapping(prefix, elemNameSpace, true);
          }
 
          rhandler.startElement(elemNameSpace, QName.getLocalPart(elemName),
                                elemName);
        }
      }

      if(null == elemName)
        shouldAddAttrs = false;
       
      if(shouldAddAttrs)
        super.execute(transformer, sourceNode, mode);
      transformer.executeChildTemplates(this, sourceNode, mode, shouldAddAttrs);

      // Now end the element if name was valid
      if (null != elemName)
      {
        rhandler.endElement(elemNameSpace, QName.getLocalPart(elemName), elemName);
        unexecuteNSDecls(transformer);
      }
    }
    catch(SAXException se)
    {
View Full Code Here

      if (TransformerImpl.S_DEBUG)
        transformer.getTraceManager().fireSelectedEvent(sourceNode, this,
                                                        "select", m_selectExpression, value);

      ResultTreeHandler handler = transformer.getResultTreeHandler();

      if (null != value)
      {
        int type = value.getType();
        String s;

        switch (type)
        {
        case XObject.CLASS_BOOLEAN :
        case XObject.CLASS_NUMBER :
        case XObject.CLASS_STRING :
          s = value.str();

          handler.characters(s.toCharArray(), 0, s.length());
          break;
        case XObject.CLASS_NODESET :

          // System.out.println(value);
          NodeIterator nl = value.nodeset();

          // Copy the tree.
          org.apache.xml.utils.TreeWalker tw =
                                                new TreeWalker2Result(transformer, handler);
          Node pos;

          while (null != (pos = nl.nextNode()))
          {
            short t = pos.getNodeType();

            // If we just copy the whole document, a startDoc and endDoc get
            // generated, so we need to only walk the child nodes.
            if (t == Node.DOCUMENT_NODE)
            {
              for (Node child = pos.getFirstChild(); child != null;
                   child = child.getNextSibling())
              {
                tw.traverse(child);
              }
            }
            else if (t == Node.ATTRIBUTE_NODE)
            {
              handler.addAttribute((Attr) pos);
            }
            else
            {
              tw.traverse(pos);
            }
          }
          // nl.detach();
          break;
        case XObject.CLASS_RTREEFRAG :
          handler.outputResultTreeFragment(value,
                                           transformer.getXPathContext());
          break;
        default :
          s = value.str();

          handler.characters(s.toCharArray(), 0, s.length());
          break;
        }
      }
    }
    catch(org.xml.sax.SAXException se)
View Full Code Here

                 java.io.FileNotFoundException, java.io.IOException
  {

    try
    {
      ResultTreeHandler rtreeHandler = transformer.getResultTreeHandler();
      XObject value;

      // Make the return object into an XObject because it
      // will be easier below.  One of the reasons to do this
      // is to keep all the conversion functionality in the
      // XObject classes.
      if (obj instanceof XObject)
      {
        value = (XObject) obj;
      }
      else if (obj instanceof String)
      {
        value = new XString((String) obj);
      }
      else if (obj instanceof Boolean)
      {
        value = new XBoolean(((Boolean) obj).booleanValue());
      }
      else if (obj instanceof Double)
      {
        value = new XNumber(((Double) obj).doubleValue());
      }
      else if (obj instanceof DocumentFragment)
      {
        value = new XRTreeFrag((DocumentFragment) obj);
      }
      else if (obj instanceof Node)
      {
        value = new XNodeSet((Node) obj);
      }
      else if (obj instanceof NodeIterator)
      {
        value = new XNodeSet((NodeIterator) obj);
      }
      else
      {
        value = new XString(obj.toString());
      }

      int type = value.getType();
      String s;

      switch (type)
      {
      case XObject.CLASS_BOOLEAN :
      case XObject.CLASS_NUMBER :
      case XObject.CLASS_STRING :
        s = value.str();

        rtreeHandler.characters(s.toCharArray(), 0, s.length());
        break;
      case XObject.CLASS_NODESET :  // System.out.println(value);
        NodeIterator nl = value.nodeset();
        Node pos;

        while (null != (pos = nl.nextNode()))
        {
          Node top = pos;

          while (null != pos)
          {
            rtreeHandler.flushPending();
            rtreeHandler.cloneToResultTree(pos, true);

            Node nextNode = pos.getFirstChild();

            while (null == nextNode)
            {
              if (Node.ELEMENT_NODE == pos.getNodeType())
              {
                rtreeHandler.endElement("", "", pos.getNodeName());
              }

              if (top == pos)
                break;

              nextNode = pos.getNextSibling();

              if (null == nextNode)
              {
                pos = pos.getParentNode();

                if (top == pos)
                {
                  if (Node.ELEMENT_NODE == pos.getNodeType())
                  {
                    rtreeHandler.endElement("", "", pos.getNodeName());
                  }

                  nextNode = null;

                  break;
                }
              }
            }

            pos = nextNode;
          }
        }
        break;
      case XObject.CLASS_RTREEFRAG :
        rtreeHandler.outputResultTreeFragment(value,
                                              transformer.getXPathContext());
        break;
      }
    }
    catch(org.xml.sax.SAXException se)
View Full Code Here

TOP

Related Classes of org.apache.xalan.transformer.ResultTreeHandler

Copyright © 2018 www.massapicom. 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.