The Artima Developer Community
Sponsored Link

Java Buzz Forum
Debugging Using DTDs

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
John Topley

Posts: 233
Nickname: johntopley
Registered: Jul, 2003

John Topley is embarking on a journey to become a J2EE master.
Debugging Using DTDs Posted: Apr 8, 2004 8:45 AM
Reply to this message Reply

This post originated from an RSS feed registered with Java Buzz by John Topley.
Original Post: Debugging Using DTDs
Feed Title: John Topley's Weblog
Feed URL: http://johntopley.com/posts.atom
Feed Description: John Topley's Weblog - some articles on Ruby on Rails development.
Latest Java Buzz Posts
Latest Java Buzz Posts by John Topley
Latest Posts From John Topley's Weblog

Advertisement

Yesterday I spent more time than I would have liked trying to track down a problem with a custom JSP tag library that I was developing. I'd added some attributes to the TLD file and packaged the custom tag as a JAR file ready for use by my test web application. I copied the JAR to the application's WEB-INF/lib directory. When I came to run my JSP, Oracle JDeveloper couldn't compile it. The compiler gave an error message about an invalid element and said that it was unable to load the taghandler class.

I went back to the TLD file and carefully scrutinised it to make sure that it was well-formed XML, which it was. Then I examined the associated tag class, and at this point I thought I'd found the source of the problem because I noticed two typos in some accessor and mutator methods. I corrected these and redeployed, but I still got the error. I roped in a couple of colleagues to help but they couldn't see anything wrong either. The frustration began to build at this point.

Finally I remembered something I'd successfully tried a while ago whilst having a problem with the Jakarta Struts configuration file. I copied the URL from the DOCTYPE at the top of the tag library deployment descriptor and pasted it into a web browser:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>1.2</jsp-version>
  .
  .
  .

After a while examining the DTD, I saw what was wrong:

<!--
The tag defines a unique tag in this tag library. It has one
attribute, id.

The tag element may have several subelements defining:

name    The unique action name

tag-class  The tag handler class implementing javax.servlet.jsp.tagext.Tag

tei-class  An optional subclass of javax.servlet.jsp.tagext.TagExtraInfo

body-content  The body content type

display-name  A short name that is intended to be displayed by tools

small-icon  Optional small-icon that can be used by tools

large-icon  Optional large-icon that can be used by tools

description  Optional tag-specific information

variable  Optional scripting variable information

attribute  All attributes of this action

example    Optional informal description of an example of a use of this tag

-->

—My file had the <example> sub-element immediately after <description>, when it should have been after <attribute>. I think this happened because I'd used a JDeveloper wizard to get the skeleton of the tag started and had then gone back and manually added some attributes. It could be argued that this wouldn't have happened had I read the relevant documentation, but who has time to read all the J2EE specs and be productive? The lesson I took away from yesterday is that:

  1. The order of elements in these files is important.
  2. When dealing with XML files you can always refer back to the associated DTD (or XSD) to find out the definitive answer on what should go where. Which is of course what they're there for!

Read: Debugging Using DTDs

Topic: Another Java Comment That Probably Makes Me Look Silly Previous Topic   Next Topic Topic: Pie!

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use