dbertoni 00/06/01 09:28:42
Modified: c/src/XSLT StylesheetExecutionContext.hpp
StylesheetExecutionContextDefault.cpp
StylesheetExecutionContextDefault.hpp
XSLTEngineImpl.cpp XSLTEngineImpl.hpp
XSLTProcessor.hpp
Log:
Added support for DOMServices::getNameOfNode(). Now using PrefixResolver
during AVT evaulation, instead of element proxy.
Revision Changes Path
1.19 +4 -1 xml-xalan/c/src/XSLT/StylesheetExecutionContext.hpp
Index: StylesheetExecutionContext.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetExecutionContext.hpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- StylesheetExecutionContext.hpp 2000/05/31 17:01:19 1.18
+++ StylesheetExecutionContext.hpp 2000/06/01 16:28:36 1.19
@@ -646,7 +646,7 @@
virtual const XalanDOMString
evaluateAttrVal(
XalanNode* contextNode,
- const XalanElement& namespaceContext,
+ const PrefixResolver& namespaceContext,
const XalanDOMString& stringedValue) = 0;
/**
@@ -1304,6 +1304,9 @@
virtual XalanDOMString
getNamespaceOfNode(const XalanNode& n) const = 0;
+
+ virtual XalanDOMString
+ getNameOfNode(const XalanNode& n) const = 0;
virtual XalanDOMString
getLocalNameOfNode(const XalanNode& n) const = 0;
1.16 +19 -2
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.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- StylesheetExecutionContextDefault.cpp 2000/05/29 22:49:00 1.15
+++ StylesheetExecutionContextDefault.cpp 2000/06/01 16:28:37 1.16
@@ -465,7 +465,7 @@
const XalanDOMString
StylesheetExecutionContextDefault::evaluateAttrVal(
XalanNode* contextNode,
- const XalanElement& namespaceContext,
+ const PrefixResolver& namespaceContext,
const XalanDOMString& stringedValue)
{
return m_xsltProcessor.evaluateAttrVal(contextNode,
@@ -992,6 +992,14 @@
XalanDOMString
+StylesheetExecutionContextDefault::getNameOfNode(const XalanNode& n) const
+{
+ return m_xpathExecutionContextDefault.getNameOfNode(n);
+}
+
+
+
+XalanDOMString
StylesheetExecutionContextDefault::getLocalNameOfNode(const XalanNode&
n) const
{
return m_xpathExecutionContextDefault.getLocalNameOfNode(n);
@@ -1072,7 +1080,16 @@
const XalanDOMString& theNamespace,
const XalanDOMString& elementName) const
{
- return m_xpathExecutionContextDefault.elementAvailable(theNamespace,
elementName);
+ if (equals(theNamespace, XSLTEngineImpl::getXSLNameSpaceURL()) == true)
+ {
+ const int xslToken =
XSLTEngineImpl::getElementToken(elementName);
+
+ return xslToken == -2 ? false : true;
+ }
+ else
+ {
+ return
m_xpathExecutionContextDefault.elementAvailable(theNamespace, elementName);
+ }
}
1.16 +4 -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.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- StylesheetExecutionContextDefault.hpp 2000/05/29 22:49:00 1.15
+++ StylesheetExecutionContextDefault.hpp 2000/06/01 16:28:37 1.16
@@ -223,7 +223,7 @@
virtual const XalanDOMString
evaluateAttrVal(
XalanNode* contextNode,
- const XalanElement& namespaceContext,
+ const PrefixResolver& namespaceContext,
const XalanDOMString& stringedValue);
virtual void
@@ -453,6 +453,9 @@
virtual XalanDOMString
getNamespaceOfNode(const XalanNode& n) const;
+
+ virtual XalanDOMString
+ getNameOfNode(const XalanNode& n) const;
virtual XalanDOMString
getLocalNameOfNode(const XalanNode& n) const;
1.43 +7 -8 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.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- XSLTEngineImpl.cpp 2000/05/29 22:45:24 1.42
+++ XSLTEngineImpl.cpp 2000/06/01 16:28:37 1.43
@@ -1941,7 +1941,7 @@
// was: stripWhiteSpace = isLiteral ? true :
shouldStripSourceNode(node);
}
- XalanText& tx = static_cast<XalanText&>(node);
+ const XalanText& tx = static_cast<const
XalanText&>(node);
XalanDOMString data;
@@ -2005,7 +2005,7 @@
false);
}
- startElement(c_wstr(node.getNodeName()));
+
startElement(c_wstr(m_executionContext->getNameOfNode(node)));
}
break;
@@ -2019,14 +2019,14 @@
cdata(toCharArray(data), 0, length(data));
}
break;
-
+
case XalanNode::ATTRIBUTE_NODE:
{
const XalanAttr& attr =
static_cast<const XalanAttr&>(node);
addResultAttribute(m_pendingAttributes,
- attr.getName(),
+
m_executionContext->getNameOfNode(attr),
attr.getValue());
}
break;
@@ -2585,7 +2585,7 @@
XalanDOMString
XSLTEngineImpl::evaluateAttrVal(
XalanNode* contextNode,
- const XalanElement& namespaceContext,
+ const PrefixResolver& namespaceContext,
const XalanDOMString& stringedValue,
XPathExecutionContext& executionContext)
{
@@ -2606,8 +2606,6 @@
XalanDOMString lookahead; // next token
XalanDOMString error; // if not empty, break from loop
- ElementPrefixResolverProxy theProxy(&namespaceContext,
m_xpathEnvSupport, m_xpathSupport);
-
while(tokenizer.hasMoreTokens())
{
if(length(lookahead) != 0)
@@ -2685,7 +2683,7 @@
// Proper close of attribute template.
// Evaluate the expression.
const XObject* const xobj =
-
evalXPathStr(expression, contextNode, theProxy,
executionContext);
+
evalXPathStr(expression, contextNode, namespaceContext,
executionContext);
const XalanDOMString exprResult(xobj->str());
@@ -2761,6 +2759,7 @@
return expressedValue;
}
+
void
1.35 +8 -8 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.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- XSLTEngineImpl.hpp 2000/05/29 22:45:25 1.34
+++ XSLTEngineImpl.hpp 2000/06/01 16:28:37 1.35
@@ -292,7 +292,7 @@
virtual XalanDOMString
evaluateAttrVal(
XalanNode* contextNode,
- const XalanElement& namespaceContext,
+ const PrefixResolver& namespaceContext,
const XalanDOMString& stringedValue,
XPathExecutionContext& executionContext);
@@ -316,11 +316,11 @@
virtual const XalanDOMString
getUniqueNSValue() const;
- virtual XObject*
- createXResultTreeFrag(const ResultTreeFragBase& r) const;
+ virtual XObject*
+ createXResultTreeFrag(const ResultTreeFragBase& r) const;
virtual XObject*
- getVariable(const QName& qname) const;
+ getVariable(const QName& qname) const;
virtual XObject*
getParamVariable(const QName& theName) const;
@@ -705,8 +705,8 @@
* @return Constants.ELEMNAME_XXX token, -1 if in XSL or Xalan
namespace,
* or -2 if not in known namespace
*/
- int
- getElementToken(const XalanDOMString& name) const
+ static int
+ getElementToken(const XalanDOMString& name)
{
AttributeKeysMapType::const_iterator iter=
s_elementKeys.find(name);
@@ -722,8 +722,8 @@
* @return Constants.ELEMNAME_XXX token, -1 if in XSL or Xalan
namespace,
* or -2 if not in known namespace
*/
- int
- getAttrTok(const XalanDOMString& name) const
+ static int
+ getAttrTok(const XalanDOMString& name)
{
AttributeKeysMapType::const_iterator iter=
s_attributeKeys.find(name);
1.11 +1 -1 xml-xalan/c/src/XSLT/XSLTProcessor.hpp
Index: XSLTProcessor.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTProcessor.hpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- XSLTProcessor.hpp 2000/05/24 19:38:50 1.10
+++ XSLTProcessor.hpp 2000/06/01 16:28:37 1.11
@@ -304,7 +304,7 @@
virtual XalanDOMString
evaluateAttrVal(
XalanNode* contextNode,
- const XalanElement& namespaceContext,
+ const PrefixResolver& namespaceContext,
const XalanDOMString& stringedValue,
XPathExecutionContext& executionContext) = 0;