You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by ga...@apache.org on 2001/04/02 12:24:19 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java
garyp 01/04/02 03:24:18
Modified: java/src/org/apache/xalan/transformer TransformerImpl.java
Log:
Fix bugzilla bug 1170. If we're trying an xsl:apply-imports at the top level (ie there are no
imported stylesheets), we need to indicate that there is no matching template and prevent and infinite recursion by using the built-in template.
Revision Changes Path
1.91 +24 -10 xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java
Index: TransformerImpl.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -r1.90 -r1.91
--- TransformerImpl.java 2001/03/28 04:41:04 1.90
+++ TransformerImpl.java 2001/04/02 10:24:17 1.91
@@ -2003,20 +2003,34 @@
maxImportLevel = -1;
}
- // Find the XSL template that is the best match for the
- // element.
- XPathContext xctxt = getXPathContext();
- PrefixResolver savedPrefixResolver = xctxt.getNamespaceContext();
+ // If we're trying an xsl:apply-imports at the top level (ie there are no
+ // imported stylesheets), we need to indicate that there is no matching template.
+ // The above logic will calculate a maxImportLevel of -1 which indicates
+ // that we should find any template. This is because a value of -1 for
+ // maxImportLevel has a special meaning. But we don't want that.
+ // We want to match -no- templates. See bugzilla bug 1170.
- try
+ if (isApplyImports && (maxImportLevel == -1))
{
- xctxt.setNamespaceContext(xslInstruction);
- template = m_stylesheetRoot.getTemplateComposed(xctxt, child, mode, maxImportLevel,
- m_quietConflictWarnings);
+ template = null;
}
- finally
+ else
{
- xctxt.setNamespaceContext(savedPrefixResolver);
+ // Find the XSL template that is the best match for the
+ // element.
+ XPathContext xctxt = getXPathContext();
+ PrefixResolver savedPrefixResolver = xctxt.getNamespaceContext();
+
+ try
+ {
+ xctxt.setNamespaceContext(xslInstruction);
+ template = m_stylesheetRoot.getTemplateComposed(xctxt, child, mode, maxImportLevel,
+ m_quietConflictWarnings);
+ }
+ finally
+ {
+ xctxt.setNamespaceContext(savedPrefixResolver);
+ }
}
// If that didn't locate a node, fall back to a default template rule.
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org