package client.net.sf.saxon.ce.style;
import client.net.sf.saxon.ce.expr.Expression;
import client.net.sf.saxon.ce.expr.instruct.Executable;
import client.net.sf.saxon.ce.om.AttributeCollection;
import client.net.sf.saxon.ce.om.StandardNames;
import client.net.sf.saxon.ce.trans.XPathException;
import client.net.sf.saxon.ce.value.Whitespace;
/**
* Compile-time representation of an xsl:import-schema declaration
* in a stylesheet
*/
public class XSLImportSchema extends StyleElement {
/**
* Ask whether this node is a declaration, that is, a permitted child of xsl:stylesheet
* (including xsl:include and xsl:import).
* @return true for this element
*/
@Override
public boolean isDeclaration() {
return true;
}
public void prepareAttributes() throws XPathException {
AttributeCollection atts = getAttributeList();
String namespace = null;
for (int a=0; a<atts.getLength(); a++) {
int nc = atts.getNameCode(a);
String f = getNamePool().getClarkName(nc);
if (f.equals(StandardNames.SCHEMA_LOCATION)) {
//
} else if (f.equals(StandardNames.NAMESPACE)) {
namespace = Whitespace.trim(atts.getValue(a));
} else {
checkUnknownAttribute(nc);
}
}
if ("".equals(namespace)) {
compileError("The zero-length string is not a valid namespace URI. "+
"For a schema with no namespace, omit the namespace attribute");
}
}
public void validate(Declaration decl) throws XPathException {
checkTopLevel(null);
compileError("This XSLT processor is not schema-aware");
}
public Expression compile(Executable exec, Declaration decl) throws XPathException {
return null;
// No action. The effect of import-schema is compile-time only
}
}
// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
// If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
// This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.