CSCI 5931A.1
XML Application Development
Summer 2002
Suggested Solution to Final Examination

(1) For example.

(a) /*/*/* (this is better than /yuecomp:yuecomp/*/*.
(b) //@*[namespace-uri()='http://dcm.uhcl.edu/yue/yuecomp'] or //@*[starts-with(name(), 'yuecomp:')]
(c) //*[count(@*) = 2].
(d) //*[@yuecomp:diff='same']
(e) //*[@yuecomp:diff='same']/descendant-or-self::*
(f) count(//@*[. = '1'])

(2) For example,

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xalan="http://xml.apache.org/xslt">
<xsl:output method="xml" version="1.0" indent="yes" />

<xsl:template match="@*|node()">
   <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
   </xsl:copy>
</xsl:template>

<xsl:template match="dummy[not(@c='1')]" />

</xsl:stylesheet>

(3) For example,

   private static void printOutXml(org.jdom.Element root, int level) {
      printIndent(level);
      System.out.println("<" + root.getName() + " numAttributes=\"" +  
                     root.getAttributes().size() + "\">");
      Iterator iterator = root.getContent().iterator();
      while (iterator.hasNext()) {     
         Object obj = iterator.next();
         if (obj instanceof org.jdom.Element)
            printOutXml((Element) obj, level+1);

      }
       printIndent(level);
      System.out.println("</" + root.getName() + ">");  
   }   //   PrintOutXml

   private static void printIndent(int level) {
      for (int i=0; i < level; i++) System.out.print("   ");
   }   //   printIndent