dbertoni 01/01/29 16:38:01
Modified: c/src/XSLT ElemElement.cpp
Log:
We should no longer generate prefixes.
Revision Changes Path
1.16 +22 -54 xml-xalan/c/src/XSLT/ElemElement.cpp
Index: ElemElement.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/ElemElement.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- ElemElement.cpp 2001/01/29 20:47:02 1.15
+++ ElemElement.cpp 2001/01/30 00:38:00 1.16
@@ -179,10 +179,6 @@
const bool haveNamespace = indexOfNSSep ==
len ? false : true;
- bool outputNSDecl = false;
-
- const XalanDOMString* ns = 0;
-
if(haveNamespace == true)
{
if (indexOfNSSep + 1 == len ||
@@ -206,16 +202,27 @@
}
else if (haveNamespace == true)
{
- ns = &getNamespaceForPrefixInternal(substring(elemName, 0,
indexOfNSSep), false);
- }
+ StylesheetExecutionContext::GetAndReleaseCachedString
prefixGuard(executionContext);
+
+ XalanDOMString& prefix = prefixGuard.get();
- const unsigned int nsLength = ns == 0 ? 0 : length(*ns);
+ prefix = substring(elemName, 0, indexOfNSSep);
+
+ const XalanDOMString& theNamespace =
executionContext.getResultNamespaceForPrefix(prefix);
+
+ if (length(theNamespace) == 0 &&
length(m_namespacesHandler.getNamespace(prefix)) == 0)
+ {
+ executionContext.warn("Could not resolve prefix: " +
prefix, this);
+ }
+ }
- if (len != 0 && (haveNamespace == false || nsLength != 0))
+ if (len != 0)
{
if(0 == m_namespaceAVT)
{
executionContext.startElement(toCharArray(elemName));
+
+
m_namespacesHandler.outputResultNamespaces(executionContext);
}
else
{
@@ -228,67 +235,28 @@
if(isEmpty(elemNameSpace) == true)
{
executionContext.startElement(toCharArray(elemName));
+
+
m_namespacesHandler.outputResultNamespaces(executionContext);
}
else
{
- if(indexOfNSSep < len)
- {
- assign(elemName, substring(elemName,
indexOfNSSep + 1));
- }
+
executionContext.startElement(toCharArray(elemName));
- const XalanDOMString& prefix =
executionContext.getResultPrefixForNamespace(elemNameSpace);
+
m_namespacesHandler.outputResultNamespaces(executionContext);
- if(isEmpty(prefix) == false)
+ if(indexOfNSSep == len)
{
- reserve(
- elemName,
- length(elemName) +
DOMServices::s_XMLNamespaceSeparatorStringLength + length(prefix) + 1);
-
- insert(elemName, 0,
DOMServices::s_XMLNamespaceSeparatorString);
- insert(elemName, 0, prefix);
-
-
executionContext.startElement(toCharArray(elemName));
+
executionContext.addResultAttribute(DOMServices::s_XMLNamespace, elemNameSpace);
}
- else
- {
-
StylesheetExecutionContext::GetAndReleaseCachedString
newPrefixGuard(executionContext);
-
- XalanDOMString& newPrefix =
newPrefixGuard.get();
-
-
executionContext.getUniqueNamespaceValue(newPrefix);
-
-
StylesheetExecutionContext::GetAndReleaseCachedString
nsDeclGuard(executionContext);
-
- XalanDOMString& nsDecl =
nsDeclGuard.get();
-
- reserve(nsDecl,
DOMServices::s_XMLNamespaceWithSeparatorLength + length(newPrefix) + 1);
-
- assign(nsDecl,
DOMServices::s_XMLNamespaceWithSeparator);
-
- append(nsDecl, newPrefix);
-
- reserve(
- elemName,
- length(elemName) +
DOMServices::s_XMLNamespaceSeparatorStringLength + length(newPrefix) + 1);
-
- insert(elemName, 0,
DOMServices::s_XMLNamespaceSeparatorString);
- insert(elemName, 0, newPrefix);
-
-
executionContext.startElement(toCharArray(elemName));
-
-
executionContext.addResultAttribute(nsDecl, elemNameSpace);
- }
}
}
}
ElemUse::execute(executionContext, sourceTree, sourceNode, mode);
- m_namespacesHandler.outputResultNamespaces(executionContext);
-
executeChildren(executionContext, sourceTree, sourceNode, mode);
- if (len != 0 && (haveNamespace == false || nsLength != 0))
+ if (len != 0)
{
executionContext.endElement(toCharArray(elemName));
}