OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Namespaces in 20 lines

[ Lists Home | Date Index | Thread Index ]
  • From: James Clark <jjc@jclark.com>
  • To: "XML Developers' List" <xml-dev@ic.ac.uk>
  • Date: Tue, 04 Aug 1998 12:40:05 +0700

At first glance the new namespace draft might appear rather complicated,
but actually it is really easy to implement.  Assuming you have a
non-namespace-aware XML tree, here's all it takes to implement basic
namespace processing in Java (albeit inefficiently and with incomplete
enforcement of namespace constraints):

/**
  * Expands an element type or attribute name (according to the
  * value of the <code>isAttribute</code> argument) using the
  * namespace declarations in effect for the specified element.
  * For a non-global attribute or for an unqualified element type
  * name or for a name starting with "xml:", returns the name
  * unchanged.  Otherwise returns an expanded name consisting
  * of the namespace URI followed by a <code>+</code>
  * character followed by the local part.  Returns null if the name
  * cannot be expanded because a namespace prefix is not declared.
  */
String expandName(String name, Element element, boolean isAttribute) {
  // The index of the colon character in the name.
  int colonIndex = name.indexOf(':');
  // The name of the attribute that declares the namespace prefix.
  String declAttName;
  if (colonIndex == -1) {
    // Default namespace applies only to element type names.
    if (isAttribute)
      return name;
    declAttName = "xmlns";
  }
  else {
    String prefix = name.substring(0, colonIndex);
    // "xml:" is special
    if (prefix.equals("xml"))
      return name;
    declAttName = "xmlns:" + prefix;
  }
  for (; element != null; element = element.getParent()) {
    String ns = element.getAttributeValue(declAttName);
    if (ns != null) {
      // Handle special meaning of xmlns=""
      if (ns.length() == 0 && colonIndex == -1)
	return name;
      return ns + '+' + name.substring(colonIndex + 1);
    }
  }
  return null;
}

James

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/
To (un)subscribe, mailto:majordomo@ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo@ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa@ic.ac.uk)





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS