You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@apache.org on 2001/01/31 02:42:20 UTC

cvs commit: xml-xalan/c/src/XSLT ElemTemplateElement.hpp FunctionDocument.cpp Stylesheet.hpp StylesheetExecutionContextDefault.cpp StylesheetExecutionContextDefault.hpp XSLTEngineImpl.cpp XSLTEngineImpl.hpp

dbertoni    01/01/30 17:42:20

  Modified:    c/src/XSLT ElemTemplateElement.hpp FunctionDocument.cpp
                        Stylesheet.hpp
                        StylesheetExecutionContextDefault.cpp
                        StylesheetExecutionContextDefault.hpp
                        XSLTEngineImpl.cpp XSLTEngineImpl.hpp
  Log:
  Changes necessary for moving PrefixResolver.cpp and PrefixResolver.hpp to DOMSupport.  Changes to implement namespace-aware processing with HTML output.
  
  Revision  Changes    Path
  1.21      +1 -1      xml-xalan/c/src/XSLT/ElemTemplateElement.hpp
  
  Index: ElemTemplateElement.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemTemplateElement.hpp,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- ElemTemplateElement.hpp	2000/11/02 22:26:00	1.20
  +++ ElemTemplateElement.hpp	2001/01/31 01:42:19	1.21
  @@ -80,7 +80,7 @@
   
   
   
  -#include <XPath/PrefixResolver.hpp>
  +#include <DOMSupport/PrefixResolver.hpp>
   
   
   
  
  
  
  1.23      +1 -1      xml-xalan/c/src/XSLT/FunctionDocument.cpp
  
  Index: FunctionDocument.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/FunctionDocument.cpp,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- FunctionDocument.cpp	2000/12/06 21:19:20	1.22
  +++ FunctionDocument.cpp	2001/01/31 01:42:20	1.23
  @@ -68,11 +68,11 @@
   
   
   #include <DOMSupport/DOMServices.hpp>
  +#include <DOMSupport/PrefixResolver.hpp>
   
   
   
   #include <XPath/XObjectFactory.hpp>
  -#include <XPath/PrefixResolver.hpp>
   
   
   
  
  
  
  1.31      +4 -1      xml-xalan/c/src/XSLT/Stylesheet.hpp
  
  Index: Stylesheet.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/Stylesheet.hpp,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- Stylesheet.hpp	2000/12/21 04:48:30	1.30
  +++ Stylesheet.hpp	2001/01/31 01:42:20	1.31
  @@ -79,7 +79,10 @@
   #include <XalanDOM/XalanNodeListSurrogate.hpp>
   
   
  -#include <XPath/PrefixResolver.hpp>
  +#include <DOMSupport/PrefixResolver.hpp>
  +
  +
  +
   #include <XPath/NameSpace.hpp>
   #include <XPath/QNameByReference.hpp>
   
  
  
  
  1.54      +9 -0      xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.cpp
  
  Index: StylesheetExecutionContextDefault.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.cpp,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- StylesheetExecutionContextDefault.cpp	2001/01/29 02:30:31	1.53
  +++ StylesheetExecutionContextDefault.cpp	2001/01/31 01:42:20	1.54
  @@ -146,6 +146,7 @@
   	m_keyDeclarationSet(),
   	m_countersTable(),
   	m_useDOMResultTreeFactory(false),
  +	m_ignoreHTMLElementNamespaces(false),
   	m_sourceTreeResultTreeFactory()
   {
   }
  @@ -1063,6 +1064,14 @@
   			version,
   			standalone,
   			xmlDecl);
  +
  +	// Check to see if the user has asked us to ignore
  +	// namespaces in HTML output.
  +	if (m_ignoreHTMLElementNamespaces == false)
  +	{
  +		// Nope, so give the formatter a prefix resolver...
  +		theFormatter->setPrefixResolver(&m_xsltProcessor);
  +	}
   
   	m_formatterListeners.insert(theFormatter);
   
  
  
  
  1.48      +35 -1     xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.hpp
  
  Index: StylesheetExecutionContextDefault.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.hpp,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- StylesheetExecutionContextDefault.hpp	2001/01/29 02:30:31	1.47
  +++ StylesheetExecutionContextDefault.hpp	2001/01/31 01:42:20	1.48
  @@ -170,7 +170,7 @@
   	 * Set the value of the flag that controls whether result tree
   	 * fragments are created using a DOM factory, or a XalanSourceTreeDocument.
   	 *
  -	 * @param The boolean value
  +	 * @param theValue The boolean value
   	 */
   	void
   	setUseDOMResultTreeFactory(bool		theValue)
  @@ -178,7 +178,36 @@
   		m_useDOMResultTreeFactory = theValue;
   	}
   
  +	/**
  +	 * Set the value of the flag that controls whether HTML output will
  +	 * check for namespace declarations on HTML elements.
  +	 *
  +	 * Set this to true if you want the HTML output formatter to skip
  +	 * checking for namespaces on elements.  This makes HTML output more
  +	 * efficient, but can result in non-conforming behavior, since the XSLT
  +	 * recommendation requires XML output for elements with namespaces.
  +	 *
  +	 * @param theValue The boolean value
  +	 */
  +	bool
  +	setIgnoreHTMLElementNamespaces() const
  +	{
  +		return m_ignoreHTMLElementNamespaces;
  +	}
  +
  +	/**
  +	 * Set the value of the flag that controls whether HTML output will
  +	 * check for namespace declarations on HTML elements.
  +	 *
  +	 * @return The value
  +	 */
  +	void
  +	setIgnoreHTMLElementNamespaces(bool		theValue)
  +	{
  +		m_ignoreHTMLElementNamespaces = theValue;
  +	}
   
  +
   	// These interfaces are inherited from StylesheetExecutionContext...
   
   	virtual bool
  @@ -904,6 +933,11 @@
   	CountersTable						m_countersTable;
   
   	bool								m_useDOMResultTreeFactory;
  +
  +	// If true, we will not check HTML output for elements with
  +	// namespaces.  This is an optimization which can lead to
  +	// non-conforming behavior.
  +	bool								m_ignoreHTMLElementNamespaces;
   
   	/**
   	 * The factory that will be used to create result tree fragments based on our
  
  
  
  1.84      +21 -0     xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp
  
  Index: XSLTEngineImpl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp,v
  retrieving revision 1.83
  retrieving revision 1.84
  diff -u -r1.83 -r1.84
  --- XSLTEngineImpl.cpp	2001/01/30 22:03:40	1.83
  +++ XSLTEngineImpl.cpp	2001/01/31 01:42:20	1.84
  @@ -152,6 +152,10 @@
   
   
   
  +const XalanDOMString	XSLTEngineImpl::s_emptyString;
  +
  +
  +
   //==========================================================
   // SECTION: Constructors
   //==========================================================
  @@ -164,6 +168,7 @@
   			XPathFactory&		xpathFactory) :
   	XSLTProcessor(),
   	DocumentHandler(),
  +	PrefixResolver(),
   	m_outputCarriageReturns(false),
   	m_outputLinefeeds(false),
   	m_useDOMResultTreeFactory(false),
  @@ -585,6 +590,22 @@
   	}
   
   	return sourceTree;
  +}
  +
  +
  +
  +const XalanDOMString&
  +XSLTEngineImpl::getNamespaceForPrefix(const XalanDOMString&		prefix) const
  +{
  +	return m_resultNamespacesStack.getNamespaceForPrefix(prefix);
  +}
  +
  +
  +
  +const XalanDOMString&
  +XSLTEngineImpl::getURI() const
  +{
  +	return s_emptyString;
   }
   
   
  
  
  
  1.61      +30 -2     xml-xalan/c/src/XSLT/XSLTEngineImpl.hpp
  
  Index: XSLTEngineImpl.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.hpp,v
  retrieving revision 1.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- XSLTEngineImpl.hpp	2001/01/30 22:03:41	1.60
  +++ XSLTEngineImpl.hpp	2001/01/31 01:42:20	1.61
  @@ -101,6 +101,10 @@
   
   
   
  +#include <DOMSupport/PrefixResolver.hpp>
  +
  +
  +
   #include <XPath/Function.hpp>
   #include <XPath/NameSpace.hpp>
   
  @@ -149,7 +153,7 @@
    *
    */
   
  -class XALAN_XSLT_EXPORT XSLTEngineImpl : public XSLTProcessor, private DocumentHandler
  +class XALAN_XSLT_EXPORT XSLTEngineImpl : public XSLTProcessor, private DocumentHandler, public PrefixResolver
   {
   public:
   
  @@ -201,7 +205,8 @@
   			XObjectFactory& 	xobjectFactory,
   			XPathFactory&		xpathFactory);
   
  -	virtual ~XSLTEngineImpl();
  +	virtual
  +	~XSLTEngineImpl();
   
   	/**
   	 * Perform initialization of statics -- must be called before any
  @@ -333,6 +338,27 @@
   	setDiagnosticsOutput(PrintWriter*	pw);
   
   
  +	// Inherited from PrefixResolver...
  +
  +	/**
  +	 * Retrieve a namespace corresponding to a prefix.  This assumes that 
  +	 * the PrevixResolver hold's its own namespace context, or is a namespace
  +	 * context itself.
  +	 *
  +	 * @param prefix Prefix to resolve
  +	 * @return namespace that prefix resolves to, or null if prefix is not found
  +	 */
  +	virtual const XalanDOMString&
  +	getNamespaceForPrefix(const XalanDOMString&		prefix) const;
  +
  +	/**
  +	 * Retrieve the base URI for the resolver.
  +	 * 
  +	 * @return URI string
  +	 */
  +	virtual const XalanDOMString&
  +	getURI() const;
  +
   	/**
   	 * Read in the XML file, either producing a Document or calling SAX events,
   	 * and register the document in a table.  If the document has already been
  @@ -1679,6 +1705,8 @@
   
   	static void
   	initializeXSLT4JElementKeys(ElementKeysMapType&		theElementKeys);
  +
  +	static const XalanDOMString		s_emptyString;
   };