diff options
author | Matthias Benkard <code@mail.matthias.benkard.de> | 2009-10-30 20:52:07 +0100 |
---|---|---|
committer | Matthias Benkard <code@mail.matthias.benkard.de> | 2009-10-30 20:52:07 +0100 |
commit | ddb83b1fb2d305e0c06fc067d82d6bab5458b0fd (patch) | |
tree | 8f9003926f0b5295c7a04b2ca257c0a2155ce841 /third-party/s-xml/test | |
parent | 15937a1a4f1cf40bc55aa34eb71c67b88466ff57 (diff) |
Add third-party XML processing libraries.
Ignore-this: 5ca28497555bf944858ca2f58bc8a62b
darcs-hash:a0b0f9baa7c9b1259e755435db1fb17123630a6c
Diffstat (limited to 'third-party/s-xml/test')
-rw-r--r-- | third-party/s-xml/test/ant-build-file.xml | 252 | ||||
-rw-r--r-- | third-party/s-xml/test/plist.xml | 38 | ||||
-rw-r--r-- | third-party/s-xml/test/simple.xml | 5 | ||||
-rw-r--r-- | third-party/s-xml/test/test-lxml-dom.lisp | 86 | ||||
-rw-r--r-- | third-party/s-xml/test/test-sxml-dom.lisp | 76 | ||||
-rw-r--r-- | third-party/s-xml/test/test-xml-struct-dom.lisp | 84 | ||||
-rw-r--r-- | third-party/s-xml/test/test-xml.lisp | 86 | ||||
-rw-r--r-- | third-party/s-xml/test/xhtml-page.xml | 271 |
8 files changed, 898 insertions, 0 deletions
diff --git a/third-party/s-xml/test/ant-build-file.xml b/third-party/s-xml/test/ant-build-file.xml new file mode 100644 index 0000000..8aef4cc --- /dev/null +++ b/third-party/s-xml/test/ant-build-file.xml @@ -0,0 +1,252 @@ +<!-- $Id: ant-build-file.xml,v 1.1.1.1 2004-06-07 18:49:59 scaekenberghe Exp $ --> +<!-- Ant 1.2 build file --> + +<project name="Libretto" default="compile" basedir="."> + + <!-- set global properties for this build --> + <property name="src" value="${basedir}/src" /> + <property name="rsrc" value="${basedir}/rsrc" /> + <property name="build" value="${basedir}/bin" /> + <property name="api" value="${basedir}/api" /> + <property name="lib" value="${basedir}/lib" /> + <property name="junit" value="${basedir}/junit" /> + <property name="rsrc" value="${basedir}/rsrc" /> + + <target name="prepare"> + <!-- Create the time stamp --> + <tstamp/> + <!-- Create the build directory structure used by compile --> + <mkdir dir="${build}" /> + <mkdir dir="${api}" /> + <mkdir dir="${junit}" /> + <copy file="${rsrc}/build/build.version" tofile="${build}/build.properties"/> + <replace file="${build}/build.properties" token="@@@BUILD_ID@@@" value="${DSTAMP}-${TSTAMP}"/> + </target> + + <target name="compile" depends="copy-rsrc"> + <!-- Compile the java code from ${src} into ${build} --> + <javac srcdir="${src}" destdir="${build}" debug="on"> + <classpath> + <fileset dir="${lib}"> + <include name="log4j-core.jar" /> + <include name="jaxp.jar" /> + <include name="crimson.jar" /> + <include name="jdom.jar" /> + <include name="beanshell.jar" /> + </fileset> + </classpath> + </javac> + </target> + + <target name="compile-junit" depends="copy-rsrc"> + <!-- Compile the java code from ${src} into ${build} --> + <javac srcdir="${junit}" destdir="${build}" debug="on"> + <classpath> + <fileset dir="${lib}"> + <include name="*.jar" /> + </fileset> + </classpath> + </javac> + </target> + + <target name="copy-rsrc" depends="prepare"> + <!-- Copy various resource files into ${build} --> + <copy todir="${build}"> + <fileset + dir="${basedir}" + includes="images/*.gif, images/*.jpg" /> + </copy> + <copy todir="${build}"> + <fileset + dir="${src}" + includes="be/beta9/libretto/data/*.txt" /> + </copy> + <copy todir="${build}"> + <fileset + dir="${rsrc}/log4j" + includes="log4j.properties" /> + </copy> + </target> + + <target name="c-header" depends="compile"> + <javah destdir="${rsrc}/VC_source" class="be.beta9.libretto.io.ParallelPort"> + <classpath> + <pathelement location="${build}" /> + </classpath> + </javah> + </target> + + <target name="test-parport" depends="compile"> + <java + classname="be.beta9.libretto.io.ParallelPortWriter" + fork="yes"> + <classpath> + <pathelement location="${build}" /> + <fileset dir="${lib}"> + <include name="*.jar" /> + </fileset> + </classpath> + </java> + </target> + + <target name="jar-simple" depends="compile"> + <!-- Put everything in ${build} into the a jar file --> + <jar + jarfile="${basedir}/libretto.jar" + basedir="${build}" + manifest="${rsrc}/manifest/libretto.mf"/> + </target> + + <target name="jar" depends="compile"> + <!-- Put everything in ${build} into the a jar file including all dependecies --> + <unjar src="${lib}/jaxp.jar" dest="${build}" /> + <unjar src="${lib}/crimson.jar" dest="${build}" /> + <unjar src="${lib}/jdom.jar" dest="${build}" /> + <unjar src="${lib}/log4j-core.jar" dest="${build}" /> + <jar + jarfile="${basedir}/libretto.jar" + basedir="${build}" + manifest="${rsrc}/manifest/libretto.mf"/> + </target> + + <target name="client-jar" depends="background-jar"> + <!-- Put everything in ${build} into the a jar file including all dependecies --> + <unjar src="${lib}/log4j-core.jar" dest="${build}" /> + <jar jarfile="${basedir}/libretto-client.jar" manifest="${rsrc}/manifest/libretto-client.mf"> + <fileset dir="${build}"> + <include name="build.properties"/> + <include name="log4j.properties"/> + <include name="be/beta9/libretto/io/*.class"/> + <include name="be/beta9/libretto/application/Build.class"/> + <include name="be/beta9/libretto/net/LibrettoTextClient*.class"/> + <include name="be/beta9/libretto/net/TestClientMessage.class"/> + <include name="be/beta9/libretto/net/ClientStatusMessageResult.class"/> + <include name="be/beta9/libretto/net/Client*.class"/> + <include name="be/beta9/libretto/net/Constants.class"/> + <include name="be/beta9/libretto/net/TextMessage.class"/> + <include name="be/beta9/libretto/net/MessageResult.class"/> + <include name="be/beta9/libretto/net/MessageException.class"/> + <include name="be/beta9/libretto/net/SingleTextMessage.class"/> + <include name="be/beta9/libretto/net/Message.class"/> + <include name="be/beta9/libretto/net/Util.class"/> + <include name="be/beta9/libretto/gui/ShowSingleTextFrame*.class"/> + <include name="be/beta9/libretto/gui/AWTTextView*.class"/> + <include name="be/beta9/libretto/model/AttributedString*.class"/> + <include name="be/beta9/libretto/model/AWTTextStyle.class"/> + <include name="be/beta9/libretto/model/LTextStyle.class"/> + <include name="be/beta9/libretto/model/AWTCharacterAttributes.class"/> + <include name="be/beta9/libretto/model/Java2DTextStyle.class"/> + <include name="be/beta9/libretto/model/LCharacterAttributes.class"/> + <include name="be/beta9/libretto/model/Java2DCharacterAttributes.class"/> + <include name="be/beta9/libretto/util/TextStyleManager.class"/> + <include name="be/beta9/libretto/util/Bean.class"/> + <include name="be/beta9/libretto/util/LibrettoSaxReader.class"/> + <include name="be/beta9/libretto/util/Preferences.class"/> + <include name="be/beta9/libretto/util/Utilities.class"/> + <include name="org/apache/log4j/**"/> + </fileset> + </jar> + </target> + + <target name="background-jar" depends="compile"> + <!-- Put everything in ${build} into the a jar file including all dependecies --> + <jar jarfile="${basedir}/background.jar" manifest="${rsrc}/manifest/background-black-window.mf"> + <fileset dir="${build}"> + <include name="be/beta9/libretto/gui/BackgroundBlackWindow.class"/> + </fileset> + </jar> + </target> + + <target name="run" depends="compile"> + <!-- Execute the main application --> + <java + classname="be.beta9.libretto.application.Libretto" + fork="yes"> + <classpath> + <pathelement location="${build}" /> + <fileset dir="${lib}"> + <include name="log4j-core.jar" /> + <include name="jaxp.jar" /> + <include name="crimson.jar" /> + <include name="jdom.jar" /> + </fileset> + </classpath> + </java> + </target> + + <target name="debug" depends="compile"> + <!-- Execute the main application in debug mode --> + <java + classname="be.beta9.libretto.application.LibrettoDebug" + fork="yes"> + <classpath> + <pathelement location="${build}" /> + <fileset dir="${lib}"> + <include name="*.jar" /> + </fileset> + </classpath> + </java> + </target> + + <target name="junit" depends="compile-junit"> + <!-- Execute all junit tests --> + <java + classname="be.beta9.libretto.AllTests" + fork="yes"> + <classpath> + <pathelement location="${build}" /> + <fileset dir="${lib}"> + <include name="*.jar" /> + </fileset> + </classpath> + </java> + </target> + + <target name="clean"> + <!-- Delete the ${build} directory trees --> + <delete dir="${build}" /> + <delete dir="${api}" /> + </target> + + <target name="api" depends="prepare"> + <!-- Generate javadoc --> + <javadoc + packagenames="be.beta9.libretto.*" + sourcepath="${src}" + destdir="${api}" + windowtitle="Libretto" + author="true" + version="true" + use="true"/> + </target> + + <target name="zip-all" depends="jar, client-jar"> + <zip zipfile="libretto.zip"> + <fileset dir="${basedir}"> + <include name="libretto.jar"/> + <include name="libretto-client.jar"/> + </fileset> + </zip> + </target> + + <target name="upload" depends="clean, zip-all"> + <ftp + server="users.pandora.be" + userid="a002458" + password="bast0s" + remotedir="libretto" + verbose="true" + passive="true"> + <fileset dir="${basedir}"> + <include name="libretto.jar" /> + <include name="libretto-client.jar" /> + <include name="libretto.zip" /> + </fileset> + </ftp> + </target> + +</project> + + + + diff --git a/third-party/s-xml/test/plist.xml b/third-party/s-xml/test/plist.xml new file mode 100644 index 0000000..910e632 --- /dev/null +++ b/third-party/s-xml/test/plist.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>AppleDockIconEnabled</key> + <true/> + <key>AppleNavServices:GetFile:0:Path</key> + <string>file://localhost/Users/sven/Pictures/</string> + <key>AppleNavServices:GetFile:0:Position</key> + <data> + AOUBXw== + </data> + <key>AppleNavServices:GetFile:0:Size</key> + <data> + AAAAAAFeAcI= + </data> + <key>AppleNavServices:PutFile:0:Disclosure</key> + <data> + AQ== + </data> + <key>AppleNavServices:PutFile:0:Path</key> + <string>file://localhost/Users/sven/Desktop/</string> + <key>AppleNavServices:PutFile:0:Position</key> + <data> + AUIBVQ== + </data> + <key>AppleNavServices:PutFile:0:Size</key> + <data> + AAAAAACkAdY= + </data> + <key>AppleSavePanelExpanded</key> + <string>YES</string> + <key>NSDefaultOpenDirectory</key> + <string>~/Desktop</string> + <key>NSNoBigString</key> + <true/> +</dict> +</plist> diff --git a/third-party/s-xml/test/simple.xml b/third-party/s-xml/test/simple.xml new file mode 100644 index 0000000..08ad942 --- /dev/null +++ b/third-party/s-xml/test/simple.xml @@ -0,0 +1,5 @@ +<?xml version="1.0"?> +<!-- This is a very simple XML document --> +<root id="123"> + <text>Hello World!</text> +</root> diff --git a/third-party/s-xml/test/test-lxml-dom.lisp b/third-party/s-xml/test/test-lxml-dom.lisp new file mode 100644 index 0000000..f7aadbe --- /dev/null +++ b/third-party/s-xml/test/test-lxml-dom.lisp @@ -0,0 +1,86 @@ +;;;; -*- mode: lisp -*- +;;;; +;;;; $Id: test-lxml-dom.lisp,v 1.3 2008-02-15 13:54:57 scaekenberghe Exp $ +;;;; +;;;; Unit and functional tests for lxml-dom.lisp +;;;; +;;;; Copyright (C) 2002, 2004 Sven Van Caekenberghe, Beta Nine BVBA. +;;;; +;;;; You are granted the rights to distribute and use this software +;;;; as governed by the terms of the Lisp Lesser General Public License +;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. + +(in-package :s-xml) + +(assert + (equal (with-input-from-string (stream " <foo/>") + (parse-xml stream :output-type :lxml)) + :|foo|)) + +(assert + (equal (parse-xml-string "<tag1><tag2 att1='one'/>this is some text</tag1>" + :output-type :lxml) + '(:|tag1| + ((:|tag2| :|att1| "one")) + "this is some text"))) + +(assert + (equal (parse-xml-string "<TAG><foo></TAG>" + :output-type :lxml) + '(:TAG "<foo>"))) + +(assert + (equal (parse-xml-string + "<P><INDEX ITEM='one'/> This is some <B>bold</B> text, with a leading & trailing space </P>" + :output-type :lxml) + '(:p + ((:index :item "one")) + " This is some " + (:b "bold") + " text, with a leading & trailing space "))) + +(assert + (consp (parse-xml-file (merge-pathnames "test/xhtml-page.xml" + (asdf:component-pathname + (asdf:find-system :s-xml.test))) + :output-type :lxml))) + +(assert + (consp (parse-xml-file (merge-pathnames "test/ant-build-file.xml" + (asdf:component-pathname + (asdf:find-system :s-xml.test))) + :output-type :lxml))) + +(assert + (consp (parse-xml-file (merge-pathnames "test/plist.xml" + (asdf:component-pathname + (asdf:find-system :s-xml.test))) + :output-type :lxml))) + +(assert + (string-equal (print-xml-string :|foo| :input-type :lxml) + "<foo/>")) + +(assert + (string-equal (print-xml-string '((:|foo| :|bar| "1")) :input-type :lxml) + "<foo bar=\"1\"/>")) + +(assert + (string-equal (print-xml-string '(:foo "some text") :input-type :lxml) + "<FOO>some text</FOO>")) + +(assert + (string-equal (print-xml-string '(:|foo| :|bar|) :input-type :lxml) + "<foo><bar/></foo>")) + +(assert (string-equal (second + (with-input-from-string (stream "<foo><![CDATA[<greeting>Hello, world!</greeting>]]></foo>") + (parse-xml stream :output-type :lxml))) + "<greeting>Hello, world!</greeting>")) + +(assert (string-equal (second + (with-input-from-string (stream "<foo><![CDATA[<greeting>Hello, < world!</greeting>]]></foo>") + (parse-xml stream :output-type :lxml))) + "<greeting>Hello, < world!</greeting>")) + +;;;; eof diff --git a/third-party/s-xml/test/test-sxml-dom.lisp b/third-party/s-xml/test/test-sxml-dom.lisp new file mode 100644 index 0000000..41cf72f --- /dev/null +++ b/third-party/s-xml/test/test-sxml-dom.lisp @@ -0,0 +1,76 @@ +;;;; -*- mode: lisp -*- +;;;; +;;;; $Id: test-sxml-dom.lisp,v 1.2 2008-02-15 13:54:57 scaekenberghe Exp $ +;;;; +;;;; Unit and functional tests for sxml-dom.lisp +;;;; +;;;; Copyright (C) 2002, 2004 Sven Van Caekenberghe, Beta Nine BVBA. +;;;; +;;;; You are granted the rights to distribute and use this software +;;;; as governed by the terms of the Lisp Lesser General Public License +;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. + +(in-package :s-xml) + +(assert + (equal (with-input-from-string (stream " <foo/>") + (parse-xml stream :output-type :sxml)) + '(:|foo|))) + +(assert + (equal (parse-xml-string "<tag1><tag2 att1='one'/>this is some text</tag1>" + :output-type :sxml) + '(:|tag1| + (:|tag2| (:@ (:|att1| "one"))) + "this is some text"))) + +(assert + (equal (parse-xml-string "<TAG><foo></TAG>" + :output-type :sxml) + '(:TAG "<foo>"))) + +(assert + (equal (parse-xml-string + "<P><INDEX ITEM='one'/> This is some <B>bold</B> text, with a leading & trailing space </P>" + :output-type :sxml) + '(:p + (:index (:@ (:item "one"))) + " This is some " + (:b "bold") + " text, with a leading & trailing space "))) + +(assert + (consp (parse-xml-file (merge-pathnames "test/xhtml-page.xml" + (asdf:component-pathname + (asdf:find-system :s-xml.test))) + :output-type :sxml))) + +(assert + (consp (parse-xml-file (merge-pathnames "test/ant-build-file.xml" + (asdf:component-pathname + (asdf:find-system :s-xml.test))) + :output-type :sxml))) + +(assert + (consp (parse-xml-file (merge-pathnames "test/plist.xml" + (asdf:component-pathname + (asdf:find-system :s-xml.test))) + :output-type :sxml))) + +(assert + (string-equal (print-xml-string '(:|foo|) :input-type :sxml) + "<foo/>")) + +(assert + (string-equal (print-xml-string '(:|foo| (:@ (:|bar| "1"))) :input-type :sxml) + "<foo bar=\"1\"/>")) + +(assert + (string-equal (print-xml-string '(:foo "some text") :input-type :sxml) + "<FOO>some text</FOO>")) + +(assert + (string-equal (print-xml-string '(:|foo| (:|bar|)) :input-type :sxml) + "<foo><bar/></foo>")) + +;;;; eof
\ No newline at end of file diff --git a/third-party/s-xml/test/test-xml-struct-dom.lisp b/third-party/s-xml/test/test-xml-struct-dom.lisp new file mode 100644 index 0000000..607402b --- /dev/null +++ b/third-party/s-xml/test/test-xml-struct-dom.lisp @@ -0,0 +1,84 @@ +;;;; -*- mode: lisp -*- +;;;; +;;;; $Id: test-xml-struct-dom.lisp,v 1.3 2008-02-15 13:54:57 scaekenberghe Exp $ +;;;; +;;;; Unit and functional tests for xml-struct-dom.lisp +;;;; +;;;; Copyright (C) 2002, 2004 Sven Van Caekenberghe, Beta Nine BVBA. +;;;; +;;;; You are granted the rights to distribute and use this software +;;;; as governed by the terms of the Lisp Lesser General Public License +;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. + +(in-package :s-xml) + +(assert + (xml-equal (with-input-from-string (stream " <foo/>") + (parse-xml stream :output-type :xml-struct)) + (make-xml-element :name :|foo|))) + +(assert + (xml-equal (parse-xml-string "<tag1><tag2 att1='one'/>this is some text</tag1>" + :output-type :xml-struct) + (make-xml-element :name :|tag1| + :children (list (make-xml-element :name :|tag2| + :attributes '((:|att1| . "one"))) + "this is some text")))) + +(assert + (xml-equal (parse-xml-string "<tag><foo></tag>" + :output-type :xml-struct) + (make-xml-element :name :|tag| + :children (list "<foo>")))) + +(assert + (xml-equal (parse-xml-string + "<P><INDEX ITEM='one'/> This is some <B>bold</B> text, with a leading & trailing space </P>" + :output-type :xml-struct) + (make-xml-element :name :p + :children (list (make-xml-element :name :index + :attributes '((:item . "one"))) + " This is some " + (make-xml-element :name :b + :children (list "bold")) + " text, with a leading & trailing space ")))) + +(assert + (xml-element-p (parse-xml-file (merge-pathnames "test/xhtml-page.xml" + (asdf:component-pathname + (asdf:find-system :s-xml.test))) + :output-type :xml-struct))) + +(assert + (xml-element-p (parse-xml-file (merge-pathnames "test/ant-build-file.xml" + (asdf:component-pathname + (asdf:find-system :s-xml.test))) + :output-type :xml-struct))) + +(assert + (xml-element-p (parse-xml-file (merge-pathnames "test/plist.xml" + (asdf:component-pathname + (asdf:find-system :s-xml.test))) + :output-type :xml-struct))) + +(assert + (string-equal (print-xml-string (make-xml-element :name "foo") + :input-type :xml-struct) + "<foo/>")) + +(assert + (string-equal (print-xml-string (make-xml-element :name "foo" :attributes '((:|bar| . "1"))) + :input-type :xml-struct) + "<foo bar=\"1\"/>")) + +(assert + (string-equal (print-xml-string (make-xml-element :name "foo" :children (list "some text")) + :input-type :xml-struct) + "<foo>some text</foo>")) + +(assert + (string-equal (print-xml-string (make-xml-element :name "foo" :children (list (make-xml-element :name "bar"))) + :input-type :xml-struct) + "<foo><bar/></foo>")) + +;;;; eof
\ No newline at end of file diff --git a/third-party/s-xml/test/test-xml.lisp b/third-party/s-xml/test/test-xml.lisp new file mode 100644 index 0000000..6d636a8 --- /dev/null +++ b/third-party/s-xml/test/test-xml.lisp @@ -0,0 +1,86 @@ +;;;; -*- mode: lisp -*- +;;;; +;;;; $Id: test-xml.lisp,v 1.4 2006-01-19 20:00:06 scaekenberghe Exp $ +;;;; +;;;; Unit and functional tests for xml.lisp +;;;; +;;;; Copyright (C) 2002, 2004 Sven Van Caekenberghe, Beta Nine BVBA. +;;;; +;;;; You are granted the rights to distribute and use this software +;;;; as governed by the terms of the Lisp Lesser General Public License +;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. + +(in-package :s-xml) + +(assert + (whitespace-char-p (character " "))) + +(assert + (whitespace-char-p (character " "))) + +(assert + (whitespace-char-p (code-char 10))) + +(assert + (whitespace-char-p (code-char 13))) + +(assert + (not (whitespace-char-p #\A))) + +(assert + (char= (with-input-from-string (stream " ABC") + (skip-whitespace stream)) + #\A)) + +(assert + (char= (with-input-from-string (stream "ABC") + (skip-whitespace stream)) + #\A)) + +(assert + (string-equal (with-output-to-string (stream) (print-string-xml "<foo>" stream)) + "<foo>")) + +(assert + (string-equal (with-output-to-string (stream) (print-string-xml "' '" stream)) + "' '")) + +(assert + (let ((string (map 'string #'identity '(#\return #\tab #\newline)))) + (string-equal (with-output-to-string (stream) (print-string-xml string stream)) + string))) + +(defun simple-echo-xml (in out) + (start-parse-xml + in + (make-instance 'xml-parser-state + :new-element-hook #'(lambda (name attributes seed) + (declare (ignore seed)) + (format out "<~a~:{ ~a='~a'~}>" + name + (mapcar #'(lambda (p) (list (car p) (cdr p))) + (reverse attributes)))) + :finish-element-hook #'(lambda (name attributes parent-seed seed) + (declare (ignore attributes parent-seed seed)) + (format out "</~a>" name)) + :text-hook #'(lambda (string seed) + (declare (ignore seed)) + (princ string out))))) + +(defun simple-echo-xml-string (string) + (with-input-from-string (in string) + (with-output-to-string (out) + (simple-echo-xml in out)))) + +(dolist (*ignore-namespaces* '(nil t)) + (assert + (let ((xml "<FOO ATT1='1' ATT2='2'><B>Text</B><EMPTY></EMPTY>More text!<SUB><SUB></SUB></SUB></FOO>")) + (equal (simple-echo-xml-string xml) + xml)))) + +(assert + (let ((xml "<p> </p>")) + (equal (simple-echo-xml-string xml) + xml))) + +;;;; eof
\ No newline at end of file diff --git a/third-party/s-xml/test/xhtml-page.xml b/third-party/s-xml/test/xhtml-page.xml new file mode 100644 index 0000000..79f3ae3 --- /dev/null +++ b/third-party/s-xml/test/xhtml-page.xml @@ -0,0 +1,271 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html>
+<head>
+
+<title>XHTML Tutorial</title>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
+<meta name="Keywords" content="XML,tutorial,HTML,DHTML,CSS,XSL,XHTML,JavaScript,ASP,ADO,VBScript,DOM,authoring,programming,learning,beginner's guide,primer,lessons,school,howto,reference,examples,samples,source code,demos,tips,links,FAQ,tag list,forms,frames,color table,W3C,Cascading Style Sheets,Active Server Pages,Dynamic HTML,Internet database development,Webbuilder,Sitebuilder,Webmaster,HTMLGuide,SiteExpert" />
+<meta name="Description" content="HTML,CSS,JavaScript,DHTML,XML,XHTML,ASP,ADO and VBScript tutorial from W3Schools." />
+<meta http-equiv="pragma" content="no-cache" />
+<meta http-equiv="cache-control" content="no-cache" />
+
+<link rel="stylesheet" type="text/css" href="../stdtheme.css" />
+
+</head>
+<body>
+
+<table border="0" cellpadding="0" cellspacing="0" width="775">
+<tr>
+<td width="140" class="content" valign="top">
+<br />
+<a class="left" href="../default.asp" target="_top"><b>HOME</b></a><br />
+<br />
+<b>XHTML Tutorial</b><br />
+<a class="left" target="_top" href="default.asp" style='font-weight:bold;color:#000000;background-color:transparent;'>XHTML HOME</a><br />
+<a class="left" target="_top" href="xhtml_intro.asp" >XHTML Introduction</a><br />
+<a class="left" target="_top" href="xhtml_why.asp" >XHTML Why</a><br />
+<a class="left" target="_top" href="xhtml_html.asp" >XHTML v HTML</a><br />
+<a class="left" target="_top" href="xhtml_syntax.asp" >XHTML Syntax</a><br />
+<a class="left" target="_top" href="xhtml_dtd.asp" >XHTML DTD</a><br />
+<a class="left" target="_top" href="xhtml_howto.asp" >XHTML HowTo</a><br />
+<a class="left" target="_top" href="xhtml_validate.asp" >XHTML Validation</a><br />
+<br />
+<b>Quiz</b>
+<br />
+<a class="left" target="_top" href="xhtml_quiz.asp" >XHTML Quiz</a><br />
+<br />
+<b>References</b>
+<br />
+<a class="left" target="_top" href="xhtml_reference.asp" >XHTML Tag List</a><br />
+<a class="left" target="_top" href="xhtml_standardattributes.asp" >XHTML Attributes</a><br />
+<a class="left" target="_top" href="xhtml_eventattributes.asp" >XHTML Events</a><br />
+</td>
+<td width="490" valign="top">
+<table width="100%" bgcolor="#FFFFFF" border="1" cellpadding="7" cellspacing="0">
+<tr>
+<td>
+<center>
+<a href="http://ad.doubleclick.net/jump/N1951.w3schools/B1097963;sz=468x60;ord=[timestamp]?" target="_new">
+<img src="http://ad.doubleclick.net/ad/N1951.w3schools/B1097963;sz=468x60;ord=[timestamp]?"
+border="0" width="468" height="60" alt="Corel XMetal 3" /></a>
+
+
+<br />Please Visit Our Sponsors !
+</center>
+<h1>XHTML Tutorial</h1>
+<a href="../default.asp"><img border="0" src="../images/btn_previous.gif" alt="Previous" /></a>
+<a href="xhtml_intro.asp"><img border="0" src="../images/btn_next.gif" width="100" height="20" alt="Next" /></a>
+
+<hr />
+
+<h2>XHTML Tutorial</h2>
+<p>XHTML is the next generation of HTML! In our XHTML tutorial you will learn the difference between HTML and XHTML, and how to use XHTML in your future
+applications. You will also see how we converted this Web site into XHTML. <a href="xhtml_intro.asp">Start Learning
+XHTML!</a></p>
+
+<h2>XHTML Quiz Test</h2>
+<p>Test your XHTML skills at W3Schools! <a href="xhtml_quiz.asp">Start XHTML
+Quiz!</a> </p>
+
+<h2>XHTML References</h2>
+<p>At W3Schools you will find complete XHTML references about tags, attributes
+and events. <a href="xhtml_reference.asp">XHTML 1.0 References</a>.</p>
+<hr />
+<h2>Table of Contents</h2>
+<p><a href="xhtml_intro.asp">Introduction to XHTML</a><br />
+This chapter gives a brief introduction to XHTML and explains what XHTML is.</p>
+<p><a href="xhtml_why.asp">XHTML - Why?</a><br />
+This chapter explains why we needed a new language like XHTML.</p>
+<p><a href="xhtml_html.asp">Differences between XHTML and HTML</a><br />
+This chapter explains the main differences in syntax between XHTML and HTML.</p>
+<p><a href="xhtml_syntax.asp">XHTML Syntax</a> <br />
+This chapter explains the basic syntax of XHTML.</p>
+<p><a href="xhtml_dtd.asp">XHTML DTD</a> <br />
+This chapter explains the three different XHTML Document Type Definitions.</p>
+<p><a href="xhtml_howto.asp">XHTML HowTo</a><br />
+This chapter explains how this web site was converted from HTML to XHTML.</p>
+<p><a href="xhtml_validate.asp">XHTML Validation</a><br />
+This chapter explains how to validate XHTML documents.</p>
+<hr />
+<h2>XHTML References</h2>
+<p><a href="xhtml_reference.asp">XHTML 1.0 Reference<br />
+</a>Our complete XHTML 1.0 reference is an alphabetical list of all XHTML tags
+with lots of examples and tips.</p>
+<p><a href="xhtml_standardattributes.asp">XHTML 1.0 Standard Attributes<br />
+</a>All the tags have attributes. The attributes for each tag are listed in the
+examples in the "XHTML 1.0 Reference" page. The attributes listed here
+are the core and language attributes all the tags has as standard (with
+few exceptions). This reference describes the attributes, and shows possible
+values for each.</p>
+<p><a href="xhtml_eventattributes.asp">XHTML 1.0 Event Attributes<br />
+</a>All the standard event attributes of the tags. This reference describes the attributes, and shows possible
+values for each.</p>
+<hr />
+<a href="../default.asp"><img border="0" src="../images/btn_previous.gif" width="100" height="20" alt="Previous" /></a>
+<a href="xhtml_intro.asp"><img border="0" src="../images/btn_next.gif" width="100" height="20" alt="Next" /></a>
+
+
+<hr />
+<p>
+Jump to: <a href="#top" target="_top"><b>Top of Page</b></a>
+or <a href="/" target="_top"><b>HOME</b></a> or
+<a href='/xhtml/default.asp?output=print' target="_blank">
+<img src="../images/print.gif" alt="Printer Friendly" border="0" />
+<b>Printer friendly page</b></a>
+</p>
+<hr />
+
+<h2>Search W3Schools:</h2>
+<form method="get" name="searchform" action="http://www.google.com/search" target="_blank">
+<input type="hidden" name="as_sitesearch" value="www.w3schools.com" />
+<input type="text" size="30" name="as_q" />
+<input type="submit" value=" Go! " />
+</form>
+
+<hr />
+<h2>What Others Say About Us</h2>
+<p>Does the world know about us? Check out these places:</p>
+<p>
+<a href="http://search.dogpile.com/texis/search?q=W3schools" target="_blank">Dogpile</a>
+<a href="http://www.altavista.com/cgi-bin/query?q=W3Schools" target="_blank">Alta Vista</a>
+<a href="http://search.msn.com/results.asp?q=W3Schools" target="_blank">MSN</a>
+<a href="http://www.google.com/search?q=W3Schools" target="_blank">Google</a>
+<a href="http://search.excite.com/search.gw?search=W3Schools" target="_blank">Excite</a>
+<a href="http://search.lycos.com/main/?query=W3Schools" target="_blank">Lycos</a>
+<a href="http://search.yahoo.com/search?p=w3schools" target="_blank">Yahoo</a>
+<a href="http://www.ask.com/main/askJeeves.asp?ask=W3Schools" target="_blank">Ask Jeeves</a>
+</p>
+<hr />
+<h2>We Help You For Free. You Can Help Us!</h2>
+<ul>
+<li><a href="../tellyourgroup.htm" target="blank">Tell your newsgroup or mailing list</a></li>
+<li><a href="../about/about_linking.asp">Link to us from your pages</a></li>
+<li><a href="../about/about_helpers.asp">Help us correct errors and broken links</a></li>
+<li><a href="../about/about_helpers.asp">Help us with spelling and grammar</a></li>
+<li><a href="http://validator.w3.org/check/referer" target="_blank">Validate the XHTML code of this page</a></li>
+</ul>
+
+<hr />
+<p>
+W3Schools is for training only. We do not warrant its correctness or its fitness for use.
+The risk of using it remains entirely with the user. While using this site, you agree to have read and accepted our
+<a href="../about/about_copyright.asp">terms of use</a> and
+<a href="../about/about_privacy.asp">privacy policy</a>.</p>
+<p>
+<a href="../about/about_copyright.asp">Copyright 1999-2002</a> by Refsnes Data. All Rights Reserved</p>
+<hr />
+<table border="0" width="100%" cellspacing="0" cellpadding="0"><tr>
+<td width="25%" align="left">
+<a href="http://validator.w3.org/check/referer" target="_blank">
+<img src="../images/vxhtml.gif" alt="Validate" width="88" height="31" border="0" /></a>
+</td>
+<td width="50%" align="center">
+<a href="../xhtml/" target="_top">How we converted to XHTML</a>
+</td>
+<td width="25%" align="right">
+<a href="http://jigsaw.w3.org/css-validator/check/referer" target="_blank">
+<img src="../images/vcss.gif" alt="Validate" width="88" height="31" border="0" /></a>
+</td>
+</tr></table>
+</td>
+</tr>
+</table>
+</td>
+
+
+
+<td width="144" align="center" valign="top">
+
+<table border="1" width="100%" bgcolor="#ffffff" cellpadding="0" cellspacing="0"><tr>
+<td align="center" class="right"><br />
+
+<a href="http://www.dotnetcharting.com" target="_blank"><img src="../images/dnc-icon.gif" alt="Web charting" border="0" /></a>
+<br />
+<a class="right" href="http://www.dotnetcharting.com" target="_blank">Web based charting<br />for ASP.NET</a>
+
+<br /><br />
+</td></tr></table>
+
+<table border="1" width="100%" bgcolor="#ffffff" cellpadding="0" cellspacing="0"><tr>
+<td align="center" class="right">
+<br />
+<a href="../hosting/default.asp">
+Your own Web Site?<br />
+<br />Read W3Schools
+<br />Hosting Tutorial</a>
+<br />
+<br />
+</td></tr></table>
+
+<table border="1" width="100%" bgcolor="#ffffff" cellpadding="0" cellspacing="0"><tr>
+<td align="center" class="right">
+<br />
+<a class="red" href="http://www.dotdnr.com" target="_blank">$15 Domain Name<br />Registration<br />Save $20 / year!</a>
+<br />
+<br />
+</td></tr></table>
+
+
+
+<table border="1" width="100%" bgcolor="#ffffff" cellpadding="0" cellspacing="0">
+<tr><td align="center" class="right">
+<br />
+<b>SELECTED LINKS</b>
+<br /><br />
+<a class="right" href="http://opogee.com/clk/dangtingcentiaonie" target="_blank">University Online<br />
+Master Degree<br />Bachelor Degree</a>
+<br /><br />
+<a class="right" href="../software/default.asp" target="_top">Web Software</a>
+<br /><br />
+<a class="right" href="../appml/default.asp" target="_top">The Future of<br />Web Development</a>
+<br /><br />
+<a class="right" href="../careers/default.asp" target="_top">Jobs and Careers</a>
+<br /><br />
+<a class="right" href="../site/site_security.asp" target="_top">Web Security</a>
+<br />
+<a class="right" href="../browsers/browsers_stats.asp" target="_top">Web Statistics</a>
+<br />
+<a class="right" href="../w3c" target="_top">Web Standards</a>
+<br /><br />
+</td></tr></table>
+
+
+<table border="1" width="100%" bgcolor="#ffffff" cellpadding="0" cellspacing="0"><tr>
+<td align="center" class="right">
+<br />
+
+<b>Recommended<br />
+Reading:</b><br /><br />
+
+<a class="right" target="_blank"
+href="http://www.amazon.com/exec/obidos/ASIN/059600026X/w3schools03">
+<img src="../images/book_amazon_xhtml.jpg" border="0" alt="HTML XHTML" /></a>
+
+
+<br /><br /></td>
+</tr></table>
+
+<table border="1" width="100%" bgcolor="#ffffff" cellpadding="0" cellspacing="0"><tr>
+<td align="center" class="right">
+<br />
+<b>PARTNERS</b><br />
+<br />
+<a class="right" href="http://www.W3Schools.com" target="_blank">W3Schools</a><br />
+<a class="right" href="http://www.topxml.com" target="_blank">TopXML</a><br />
+<a class="right" href="http://www.visualbuilder.com" target="_blank">VisualBuilder</a><br />
+<a class="right" href="http://www.xmlpitstop.com" target="_blank">XMLPitstop</a><br />
+<a class="right" href="http://www.developersdex.com" target="_blank">DevelopersDex</a><br />
+<a class="right" href="http://www.devguru.com" target="_blank">DevGuru</a><br />
+<a class="right" href="http://www.programmersheaven.com/" target="_blank">Programmers Heaven</a><br />
+<a class="right" href="http://www.codeproject.com" target="_blank">The Code Project</a><br />
+<a class="right" href="http://www.tek-tips.com" target="_blank">Tek Tips Forum</a><br />
+<a class="right" href="http://www.zvon.ORG/" target="_blank">ZVON.ORG</a><br />
+<a class="right" href="http://www.topxml.com/search.asp" target="_blank">TopXML Search</a><br />
+<br />
+</td>
+</tr></table>
+</td></tr></table>
+
+</body>
+</html>
|