public string GetNamespace() { if (!node.GetOptions().IsSchemaNode()) { // determine namespace of leaf node QName qname = new QName(node.GetName()); return XMPMetaFactory.GetSchemaRegistry().GetNamespaceURI(qname.GetPrefix()); } else { return baseNS; } }
/// <summary>Writes one namespace declaration to the output.</summary> /// <param name="prefix">a namespace prefix (without colon) or a complete qname (when namespace == null)</param> /// <param name="namespace">the a namespace</param> /// <param name="usedPrefixes">a set containing currently used prefixes</param> /// <param name="indent">the current indent level</param> /// <exception cref="System.IO.IOException">Forwards all writer exceptions.</exception> private void DeclareNamespace(string prefix, string @namespace, HashSet<string> usedPrefixes, int indent) { if (@namespace == null) { // prefix contains qname, extract prefix and lookup namespace with prefix QName qname = new QName(prefix); if (qname.HasPrefix()) { prefix = qname.GetPrefix(); // add colon for lookup @namespace = XMPMetaFactory.GetSchemaRegistry().GetNamespaceURI(prefix + ":"); // prefix w/o colon DeclareNamespace(prefix, @namespace, usedPrefixes, indent); } else { return; } } if (!usedPrefixes.Contains(prefix)) { WriteNewline(); WriteIndent(indent); Write("xmlns:"); Write(prefix); Write("=\""); Write(@namespace); Write('"'); usedPrefixes.Add(prefix); } }