[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Namespaces in 20 lines

  • From: James Clark <jjc@j...>
  • To: "XML Developers' List" <xml-dev@i...>
  • Date: Tue, 04 Aug 1998 12:40:05 +0700

how to implement a namespace
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@i...
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/
To (un)subscribe, mailto:majordomo@i... the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo@i... the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa@i...)


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.