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 2002/03/28 08:07:57 UTC
cvs commit: xml-xalan/c/src/XSLT XSLTEngineImpl.cpp XSLTEngineImpl.hpp
dbertoni 02/03/27 23:07:57
Modified: c/src/XSLT XSLTEngineImpl.cpp XSLTEngineImpl.hpp
Log:
Cleaned-up unused map. Improved result namespace handling.
Revision Changes Path
1.136 +35 -57 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.135
retrieving revision 1.136
diff -u -r1.135 -r1.136
--- XSLTEngineImpl.cpp 13 Mar 2002 04:34:57 -0000 1.135
+++ XSLTEngineImpl.cpp 28 Mar 2002 07:07:56 -0000 1.136
@@ -962,19 +962,6 @@
tok = (*j).second;
}
}
- else if(equals(ns, s_XSLT4JNameSpaceURL))
- {
- const XalanDOMString& localName =
- DOMServices::getLocalNameOfNode(node);
-
- const ElementKeysMapType::const_iterator j =
- s_XSLT4JElementKeys.find(localName);
-
- if(j != s_XSLT4JElementKeys.end())
- {
- tok = (*j).second;
- }
- }
return tok;
}
@@ -2735,44 +2722,52 @@
void
XSLTEngineImpl::addResultNamespace(
+ const XalanDOMString& thePrefix,
+ const XalanDOMString& theName,
+ const XalanNode& theNode,
+ AttributeListImpl& thePendingAttributes,
+ bool fOnlyIfPrefixNotPresent)
+{
+ if (fOnlyIfPrefixNotPresent == false ||
+ m_resultNamespacesStack.prefixIsPresentLocal(thePrefix) == false)
+ {
+ const XalanDOMString* const desturi = getResultNamespaceForPrefix(thePrefix);
+ const XalanDOMString& srcURI = theNode.getNodeValue();
+
+ if(desturi == 0 || equals(srcURI, *desturi) == false)
+ {
+ addResultAttribute(thePendingAttributes, theName, srcURI);
+ }
+ }
+}
+
+
+
+void
+XSLTEngineImpl::addResultNamespace(
const XalanNode& theNode,
AttributeListImpl& thePendingAttributes,
bool fOnlyIfPrefixNotPresent)
{
+ assert(m_executionContext != 0);
assert(theNode.getNodeType() == XalanNode::ATTRIBUTE_NODE);
const XalanDOMString& aname = theNode.getNodeName();
- const bool isPrefix = startsWith(aname, DOMServices::s_XMLNamespaceWithSeparator);
-
- const XalanDOMString prefix = isPrefix == true ?
- substring(aname, DOMServices::s_XMLNamespaceWithSeparatorLength) : XalanDOMString();
-
- if (equals(aname, DOMServices::s_XMLNamespace) || isPrefix)
+ if (equals(aname, DOMServices::s_XMLNamespace) == true)
{
- if (fOnlyIfPrefixNotPresent == true)
- {
- if (m_resultNamespacesStack.prefixIsPresentLocal(prefix) == false)
- {
- const XalanDOMString* const desturi = getResultNamespaceForPrefix(prefix);
- const XalanDOMString& srcURI = theNode.getNodeValue();
+ // Default namespace declaration...
+ addResultNamespace(s_emptyString, aname, theNode, thePendingAttributes, fOnlyIfPrefixNotPresent);
+ }
+ else if (startsWith(aname, DOMServices::s_XMLNamespaceWithSeparator))
+ {
+ StylesheetExecutionContext::GetAndReleaseCachedString prefixGuard(*m_executionContext);
- if(desturi == 0 || equals(srcURI, *desturi) == false)
- {
- addResultAttribute(thePendingAttributes, aname, srcURI);
- }
- }
- }
- else
- {
- const XalanDOMString* const desturi = getResultNamespaceForPrefix(prefix);
- const XalanDOMString& srcURI = theNode.getNodeValue();
+ XalanDOMString& thePrefix = prefixGuard.get();
- if(desturi == 0 || equals(srcURI, *desturi) == false)
- {
- addResultAttribute(thePendingAttributes, aname, srcURI);
- }
- }
+ substring(aname, thePrefix, DOMServices::s_XMLNamespaceWithSeparatorLength);
+
+ addResultNamespace(thePrefix, aname, theNode, thePendingAttributes, fOnlyIfPrefixNotPresent);
}
}
@@ -3391,15 +3386,6 @@
-void
-XSLTEngineImpl::initializeXSLT4JElementKeys(ElementKeysMapType& theElementKeys)
-{
- theElementKeys[Constants::ELEMNAME_COMPONENT_STRING] = Constants::ELEMNAME_COMPONENT;
- theElementKeys[Constants::ELEMNAME_SCRIPT_STRING] = Constants::ELEMNAME_SCRIPT;
-}
-
-
-
static XalanDOMString s_XSLNameSpaceURL;
static XalanDOMString s_XSLT4JNameSpaceURL;
@@ -3410,8 +3396,6 @@
static XSLTEngineImpl::ElementKeysMapType s_elementKeys;
-static XSLTEngineImpl::ElementKeysMapType s_XSLT4JElementKeys;
-
const double XSLTEngineImpl::s_XSLTVerSupported(1.0);
@@ -3427,8 +3411,6 @@
const XSLTEngineImpl::ElementKeysMapType& XSLTEngineImpl::s_elementKeys = ::s_elementKeys;
-const XSLTEngineImpl::ElementKeysMapType& XSLTEngineImpl::s_XSLT4JElementKeys = ::s_XSLT4JElementKeys;
-
void
@@ -3445,8 +3427,6 @@
initializeAttributeKeysTable(::s_attributeKeys);
initializeElementKeysTable(::s_elementKeys);
-
- initializeXSLT4JElementKeys(::s_XSLT4JElementKeys);
}
@@ -3454,8 +3434,6 @@
void
XSLTEngineImpl::terminate()
{
- ElementKeysMapType().swap(::s_XSLT4JElementKeys);
-
ElementKeysMapType().swap(::s_elementKeys);
AttributeKeysMapType().swap(::s_attributeKeys);
1.81 +9 -31 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.80
retrieving revision 1.81
diff -u -r1.80 -r1.81
--- XSLTEngineImpl.hpp 23 Feb 2002 04:23:17 -0000 1.80
+++ XSLTEngineImpl.hpp 28 Mar 2002 07:07:56 -0000 1.81
@@ -662,28 +662,6 @@
getXSLTVerSupported();
/**
- * Accessor method for hash table of XSLT IDs for attribute names.
- *
- * @return hash table of key names and IDs
- */
- static const AttributeKeysMapType&
- getAttributeKeys()
- {
- return s_attributeKeys;
- }
-
- /**
- * Accessor method for hash table of XSLT IDs for element names.
- *
- * @return hash table of key names and IDs
- */
- static const ElementKeysMapType&
- getElementKeys()
- {
- return s_elementKeys;
- }
-
- /**
* Given an XSL tag name, return an integer token that corresponds to
* ELEMNAME_XXX constants defined in Constants.hpp
*
@@ -711,7 +689,7 @@
static int
getAttrTok(const XalanDOMString& name)
{
- AttributeKeysMapType::const_iterator iter=
+ ElementKeysMapType::const_iterator iter=
s_attributeKeys.find(name);
return iter == s_attributeKeys.end() ? -2 : (*iter).second;
@@ -1464,6 +1442,14 @@
void
addResultNamespace(
+ const XalanDOMString& thePrefix,
+ const XalanDOMString& theName,
+ const XalanNode& theNode,
+ AttributeListImpl& thePendingAttributes,
+ bool fOnlyIfPrefixNotPresent);
+
+ void
+ addResultNamespace(
const XalanNode& theNode,
AttributeListImpl& thePendingAttributes,
bool fOnlyIfPrefixNotPresent = false);
@@ -1510,11 +1496,6 @@
static const XalanDOMString& s_uniqueNamespacePrefix;
/**
- * Map that can look up XSLT4J extensions element IDs via name.
- */
- static const ElementKeysMapType& s_XSLT4JElementKeys;
-
- /**
* Map of XSLT IDs for attribute names.
*/
static const AttributeKeysMapType& s_attributeKeys;
@@ -1672,9 +1653,6 @@
static void
initializeElementKeysTable(ElementKeysMapType& theElementKeys);
-
- static void
- initializeXSLT4JElementKeys(ElementKeysMapType& theElementKeys);
static const XalanDOMString s_emptyString;
};
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org