public static ParseQualifiedName ( string qname, string &prefix, string &local ) : void | ||
qname | string | |
prefix | string | |
local | string | |
return | void |
// see http://www.w3.org/TR/xslt#function-element-available private bool ElementAvailable(string qname) { string name, prefix; PrefixQName.ParseQualifiedName(qname, out prefix, out name); string ns = this.manager.ResolveXmlNamespace(prefix); // msxsl:script - is not an "instruction" so we return false for it. if (ns == XmlReservedNs.NsXslt) { return( name == "apply-imports" || name == "apply-templates" || name == "attribute" || name == "call-template" || name == "choose" || name == "comment" || name == "copy" || name == "copy-of" || name == "element" || name == "fallback" || name == "for-each" || name == "if" || name == "message" || name == "number" || name == "processing-instruction" || name == "text" || name == "value-of" || name == "variable" ); } return(false); }
public override object Invoke(XsltContext xsltContext, object[] args, XPathNavigator docContext) { XsltCompileContext xsltCompileContext = (XsltCompileContext)xsltContext; string local, prefix; PrefixQName.ParseQualifiedName(ToString(args[0]), out prefix, out local); string? ns = xsltContext.LookupNamespace(prefix); XmlQualifiedName keyName = new XmlQualifiedName(local, ns); XPathNavigator root = docContext.Clone(); root.MoveToRoot(); ArrayList?resultCollection = null; foreach (Key key in xsltCompileContext._processor !.KeyList !) { if (key.Name == keyName) { Hashtable?keyTable = key.GetKeys(root); if (keyTable == null) { keyTable = xsltCompileContext.BuildKeyTable(key, root); key.AddKey(root, keyTable); } XPathNodeIterator?it = args[1] as XPathNodeIterator; if (it != null) { it = it.Clone(); while (it.MoveNext()) { resultCollection = AddToList(resultCollection, (ArrayList?)keyTable[it.Current !.Value]);
// see http://www.w3.org/TR/xslt#function-element-available private bool ElementAvailable(string qname) { string name, prefix; PrefixQName.ParseQualifiedName(qname, out prefix, out name); string ns = this.manager.ResolveXmlNamespace(prefix); // msxsl:script - is not an "instruction" so we return false for it. if (ns == Keywords.s_XsltNamespace) { return( name == Keywords.s_ApplyImports || name == Keywords.s_ApplyTemplates || name == Keywords.s_Attribute || name == Keywords.s_CallTemplate || name == Keywords.s_Choose || name == Keywords.s_Comment || name == Keywords.s_Copy || name == Keywords.s_CopyOf || name == Keywords.s_Element || name == Keywords.s_Fallback || name == Keywords.s_ForEach || name == Keywords.s_If || name == Keywords.s_Message || name == Keywords.s_Number || name == Keywords.s_ProcessingInstruction || name == Keywords.s_Text || name == Keywords.s_ValueOf || name == Keywords.s_Variable ); } return(false); }
internal XmlQualifiedName CreateXmlQName(string qname) { string prefix, local; PrefixQName.ParseQualifiedName(qname, out prefix, out local); return(new XmlQualifiedName(local, _scopeManager.ResolveXmlNamespace(prefix))); }
// see: http://www.w3.org/TR/xslt#function-function-available private bool FunctionAvailable(string qname) { string name, prefix; PrefixQName.ParseQualifiedName(qname, out prefix, out name); string ns = LookupNamespace(prefix); if (ns == XmlReservedNs.NsMsxsl) { return(name == f_NodeSet); } else if (ns.Length == 0) { switch (name) { case "last": case "position": case "name": case "namespace-uri": case "local-name": case "count": case "id": case "string": case "concat": case "starts-with": case "contains": case "substring-before": case "substring-after": case "substring": case "string-length": case "normalize-space": case "translate": case "boolean": case "not": case "true": case "false": case "lang": case "number": case "sum": case "floor": case "ceiling": case "round": return(true); // XSLT functions: default: return(s_FunctionTable[name] != null && name != "unparsed-entity-uri"); } } else { // Is this script or extention function? return(GetExtentionMethod(ns, name, /*argTypes*/ null, out _) != null); } }
// see: http://www.w3.org/TR/xslt#function-function-available private bool FunctionAvailable(string qname) { string name, prefix; PrefixQName.ParseQualifiedName(qname, out prefix, out name); string ns = LookupNamespace(prefix); if (ns == XmlReservedNs.NsMsxsl) { return(name == f_NodeSet); } else if (ns.Length == 0) { return( // It'll be better to get this information from XPath name == "last" || name == "position" || name == "name" || name == "namespace-uri" || name == "local-name" || name == "count" || name == "id" || name == "string" || name == "concat" || name == "starts-with" || name == "contains" || name == "substring-before" || name == "substring-after" || name == "substring" || name == "string-length" || name == "normalize-space" || name == "translate" || name == "boolean" || name == "not" || name == "true" || name == "false" || name == "lang" || name == "number" || name == "sum" || name == "floor" || name == "ceiling" || name == "round" || // XSLT functions: (s_FunctionTable[name] != null && name != "unparsed-entity-uri") ); } else { // Is this script or extention function? object extension; return(GetExtentionMethod(ns, name, /*argTypes*/ null, out extension) != null); } }
private String SystemProperty(string qname) { String result = string.Empty; string prefix; string local; PrefixQName.ParseQualifiedName(qname, out prefix, out local); // verify the prefix corresponds to the Xslt namespace string urn = LookupNamespace(prefix); if (urn == XmlReservedNs.NsXslt) { if (local == "version") { result = "1"; } else if (local == "vendor") { result = "Microsoft"; } else if (local == "vendor-url") { result = "http://www.microsoft.com"; } } else { if (urn == null && prefix != null) { // if prefix exist it has to be mapped to namespace. // Can it be "" here ? throw XsltException.Create(Res.Xslt_InvalidPrefix, prefix); } return(string.Empty); } return(result); }
private DecimalFormat ResolveFormatName(string formatName) { string ns = string.Empty, local = string.Empty; if (formatName != null) { string prefix; PrefixQName.ParseQualifiedName(formatName, out prefix, out local); ns = LookupNamespace(prefix); } DecimalFormat formatInfo = this.processor.RootAction.GetDecimalFormat(new XmlQualifiedName(local, ns)); if (formatInfo == null) { if (formatName != null) { throw XsltException.Create(Res.Xslt_NoDecimalFormat, formatName); } formatInfo = new DecimalFormat(new NumberFormatInfo(), '#', '0', ';'); } return(formatInfo); }
private static double NameTest(string name) { if (name == "*") { return(-0.5); } int idx = name.Length - 2; if (0 <= idx && name[idx] == ':' && name[idx + 1] == '*') { if (!PrefixQName.ValidatePrefix(name.Substring(0, idx))) { throw XsltException.Create(SR.Xslt_InvalidAttrValue, "elements", name); } return(-0.25); } else { PrefixQName.ParseQualifiedName(name, out _, out _); return(0); } }
double NameTest(String name) { if (name == "*") { return(-0.5); } int idx = name.Length - 2; if (0 <= idx && name[idx] == ':' && name[idx + 1] == '*') { if (!PrefixQName.ValidatePrefix(name.Substring(0, idx))) { throw XsltException.Create(Res.Xslt_InvalidAttrValue, Keywords.s_Elements, name); } return(-0.25); } else { string prefix, localname; PrefixQName.ParseQualifiedName(name, out prefix, out localname); return(0); } }
private XmlDataType ParseDataType(string value, InputScopeManager manager) { if (value == null) { // Avt is not constant, or attribute wasn't defined return(XmlDataType.Text); } if (value == "text") { return(XmlDataType.Text); } if (value == "number") { return(XmlDataType.Number); } String prefix, localname; PrefixQName.ParseQualifiedName(value, out prefix, out localname); manager.ResolveXmlNamespace(prefix); if (prefix.Length == 0 && !_forwardCompatibility) { throw XsltException.Create(SR.Xslt_InvalidAttrValue, "data-type", value); } return(XmlDataType.Text); }
internal void SetQName(string qname) { PrefixQName.ParseQualifiedName(qname, out Prefix, out Name); }