XML Transformations Anitha Reddy
Agenda <ul><ul><li>URI,URL,URN </li></ul></ul><ul><ul><li>Overview </li></ul></ul><ul><ul><li>XSL & co </li></ul></ul><ul>...
URI <ul><li>a  Uniform Resource Identifier  ( URI ), is a compact  string  of  characters  used to  identify  or  name  a ...
Overview <ul><li>XSL:  xml-based Stylesheet Language </li></ul><ul><li>Xpath:  a language for navigating in XML documents ...
XSL & co <ul><li>It started with XSL and ended up with XSLT, XPath, and XSL-FO.  </li></ul><ul><li>XSL consists of three p...
XSLT Advantages & Disadvantages <ul><li>Advantages: </li></ul><ul><li>Easy display formatted XML data in browser. </li></u...
XSLT and Java <ul><li>JDK 1.4 contains all necessary classes </li></ul><ul><ul><li>See  javax.xml.transform  package. </li...
XML Transformation Example hello.xml hello.xsl HTML, XML etc
How XSLT works <ul><li>The XML text document is read in and stored as a  tree  of nodes </li></ul><ul><li>The  <xsl:templa...
<?xml version=&quot;1.0&quot; ?> <!-- hello.xml --> <?xml:stylesheet type=&quot;text/xsl&quot; href=&quot;hello.xsl&quot;?...
Transform.java <ul><li>import  javax.xml.transform.*; </li></ul><ul><li>java Transform hello.xsl hello.xml </li></ul><ul><...
XPath <ul><li>XPath is an expression language used to: </li></ul><ul><ul><li>Find nodes and attributes (location paths) in...
Location Paths <ul><li>Match root node   <xsl:template match=“ / ”/>   …   </xsl:template> </li></ul><ul><li>/AAA:  Select...
Location Paths contd.. <ul><li>Use // to indicate zero or more elements may occur between slashes </li></ul><ul><ul><li>//...
Location Paths contd.. <ul><li>Match a specific element </li></ul><ul><ul><li>Use […] as a predicate filter to select a pa...
Location Paths contd.. <ul><li>Match a specific attribute:  Use @ attribute  to select a particular attribute </li></ul><u...
Location Paths contd.. <ul><li>/AAA/BBB/descendant::*  Select all descendants of /AAA/BBB        <AAA>            <BBB>   ...
Location Paths contd.. <ul><li>The ancestor axis contains the ancestors of the context node; the ancestors of the context ...
Location Paths contd.. <ul><li>The ancestor axis contains the ancestors of the context node; the ancestors of the context ...
Location Paths contd.. <ul><li>The ancestor axis contains the ancestors of the context node; the ancestors of the context ...
<ul><li>The ancestor, descendant, following, preceding and self axes partition a document (ignoring attribute and namespac...
Xpath Functions <ul><li>name()  returns name of the element  </li></ul><ul><ul><li>//*[name()='BBB']:  Select all elements...
XSLT Stylesheet Elements <ul><li>Matching and selection templates </li></ul><ul><ul><li>xsl:template </li></ul></ul><ul><u...
XSLT template Element <ul><li>xsl:template match=“ XPath ” </li></ul><ul><ul><li>Defines a template rule for producing out...
XSLT value-of Element <ul><li>xsl:value-of select=“ expression ” </li></ul><ul><ul><li>Evaluates the  expression  as a str...
XSLT for-each Element <ul><li>xsl:for-each select=“ expression ” </li></ul><ul><ul><li>Processes each node selected by the...
XSLT if Element <ul><li>xsl:if test=“ expression ” </li></ul><ul><ul><li>Evaluates the  expression  and if true applies th...
XSLT choose Element <ul><li>xsl:choose   </li></ul><ul><ul><li>Selects any number of alternatives </li></ul></ul><ul><ul><...
XSL-FO
What is XSL-FO <ul><li>XSL-FO is a language for formatting XML data </li></ul><ul><li>XSL-FO stands for Extensible Stylesh...
XSL-FO structure <ul><li>FO document instances represent structures of composed pages: </li></ul><ul><ul><li>Page sequence...
XSL-FO document  <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?> </li></ul><ul><li><fo:root xmlns:...
Current FO implementations <ul><li>Open Source/Freeware Page regions </li></ul><ul><ul><li>Apache FOP </li></ul></ul><ul><...
XSL-FO Production process XSLT to  FO FO Impl. <mydoc> … <p> Hello </p> … </mydoc> Source XML Document <fo:root> … <fo:blo...
AltovaXML Spy <ul><li>Altova XMLSpy®   2008  is a comprehensive IDE for developing XML projects </li></ul><ul><li>The Ente...
XMLSPY in action
References <ul><li>Xpath-  http://www.zvon.org/xxl/XPathTutorial/Output/example1.html </li></ul><ul><li>XMLSpy Tutorial </...
A Q &
Upcoming SlideShare
Loading in...5
×

XMLT

3,580

Published on

Presentation on XMLT

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,580
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • XMLT

    1. 1. XML Transformations Anitha Reddy
    2. 2. Agenda <ul><ul><li>URI,URL,URN </li></ul></ul><ul><ul><li>Overview </li></ul></ul><ul><ul><li>XSL & co </li></ul></ul><ul><ul><li>XPath </li></ul></ul><ul><ul><li>XSLT Language </li></ul></ul><ul><ul><li>XSL-FO </li></ul></ul><ul><ul><li>AltovaXML Spy </li></ul></ul><ul><ul><li>Demo </li></ul></ul>
    3. 3. URI <ul><li>a Uniform Resource Identifier ( URI ), is a compact string of characters used to identify or name a resource . The main purpose of this identification is to enable interaction with representations of the resource over a network, typically the World Wide Web , using specific protocols . </li></ul><ul><li>A URI may be classified as a locator (URL) or a name (URN) or both. </li></ul><ul><li>A Uniform Resource Name (URN) is like a person's name, while a Uniform Resource Locator (URL) is like their street address </li></ul><ul><li>Syntax: The URI syntax is essentially a URI scheme name like &quot; HTTP &quot;, &quot; FTP &quot;, &quot; mailto &quot;, etc., followed by a colon character, and then a scheme-specific part. </li></ul>
    4. 4. Overview <ul><li>XSL: xml-based Stylesheet Language </li></ul><ul><li>Xpath: a language for navigating in XML documents </li></ul><ul><li>XQuery: the language for querying XML data </li></ul><ul><li>XLink: defines a standard way of creating hyperlinks in XML documents. </li></ul><ul><li>Xpointer: allows the hyperlinks to point to more specific parts (fragments) in the XML document. </li></ul>XSL-FO XSL FAMILY
    5. 5. XSL & co <ul><li>It started with XSL and ended up with XSLT, XPath, and XSL-FO. </li></ul><ul><li>XSL consists of three parts: </li></ul><ul><ul><li>XSLT - a language for transforming XML documents </li></ul></ul><ul><ul><li>XPath - a language for navigating in XML documents </li></ul></ul><ul><ul><li>XSL-FO - a language for formatting XML documents </li></ul></ul><ul><li>XSLT became a W3C Recommendation 16. November 1999 </li></ul>
    6. 6. XSLT Advantages & Disadvantages <ul><li>Advantages: </li></ul><ul><li>Easy display formatted XML data in browser. </li></ul><ul><li>Easier to modify when XML data format changes than to modify DOM and SAX parsing code. </li></ul><ul><li>Can be used with database queries that return XML. </li></ul><ul><li>Disadvantages: </li></ul><ul><li>Memory intensive, performance hit. </li></ul><ul><li>Difficult to implement complex business rules. </li></ul><ul><li>Have to learn new language. </li></ul>
    7. 7. XSLT and Java <ul><li>JDK 1.4 contains all necessary classes </li></ul><ul><ul><li>See javax.xml.transform package. </li></ul></ul><ul><li>Lower versions require downloading XSLT processor and SAX parser. </li></ul><ul><li>XSLT Processors </li></ul><ul><ul><li>Apache Xalan http://xml.apache.org/ xalan </li></ul></ul><ul><ul><li>SAXON http://saxon.sourceforge.net </li></ul></ul><ul><ul><li>Microsoft’s XML Parser 4.0 (MSXML) http://www.microsoft.com/xml </li></ul></ul>
    8. 8. XML Transformation Example hello.xml hello.xsl HTML, XML etc
    9. 9. How XSLT works <ul><li>The XML text document is read in and stored as a tree of nodes </li></ul><ul><li>The <xsl:template match=&quot;/&quot;> template is used to select the entire tree </li></ul><ul><li>The rules within the template are applied to the matching nodes, thus changing the structure of the XML tree </li></ul><ul><ul><li>If there are other templates, they must be called explicitly from the main template </li></ul></ul><ul><li>Unmatched parts of the XML tree are not changed </li></ul><ul><li>After the template is applied, the tree is written out again as a text document </li></ul>
    10. 10. <?xml version=&quot;1.0&quot; ?> <!-- hello.xml --> <?xml:stylesheet type=&quot;text/xsl&quot; href=&quot;hello.xsl&quot;?> <myMessage> <message> Hello XSLT! </message> </myMessage> <html> <body> <h1> Hello XSLT! </h1> </body> </html> <?xml version=&quot;1.0&quot; ?> <!-- hello.xsl --> <xsl:stylesheet version=&quot;1.0&quot; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;> <xsl:template match=&quot; myMessage &quot;> <html><body> <h1> <xsl:value-of select=&quot;message&quot;/> </h1> </body></html> </xsl:template> </xsl:stylesheet>
    11. 11. Transform.java <ul><li>import javax.xml.transform.*; </li></ul><ul><li>java Transform hello.xsl hello.xml </li></ul><ul><li>File stylesheet = new File(argv[0]); </li></ul><ul><li>File datafile = new File(argv[1]); </li></ul><ul><li>TransformerFactory tFactory = TransformerFactory.newInstance(); </li></ul><ul><li>StreamSource stylesource = new StreamSource(stylesheet); </li></ul><ul><li>Transformer transformer = tFactory.newTransformer(stylesource); </li></ul><ul><li>StreamSource source = new StreamSource(datafile); </li></ul><ul><li>StreamResult result = new StreamResult(System.out); </li></ul><ul><li>transformer.transform(source, result); // Produce output to console </li></ul>Any InputStream / String Any OutputStream / String
    12. 12. XPath <ul><li>XPath is an expression language used to: </li></ul><ul><ul><li>Find nodes and attributes (location paths) in the XML file </li></ul></ul><ul><ul><li>Test boolean conditions </li></ul></ul><ul><ul><li>Manipulate strings </li></ul></ul><ul><ul><li>Perform numerical calculations </li></ul></ul>
    13. 13. Location Paths <ul><li>Match root node <xsl:template match=“ / ”/> … </xsl:template> </li></ul><ul><li>/AAA: Select the root element AAA       <AAA>           <BBB/>           <CCC/>           <EEE/>       </AAA> </li></ul><ul><li>/AAA/CCC: Select all elements CCC which are children of the root element AAA      <AAA>            <CCC/>           <BBB/>           <DDD/>             <CCC/>      </AAA> </li></ul>
    14. 14. Location Paths contd.. <ul><li>Use // to indicate zero or more elements may occur between slashes </li></ul><ul><ul><li>//BBB : Select all elements BBB      <AAA>            <BBB/>           <CCC/>          <DDD>                 <BBB/>           </DDD>           <CCC>                <DDD>                      <BBB/>                     <BBB/>                </DDD>           </CCC>      </AAA> </li></ul></ul><ul><ul><li><xsl:template match=“ order//item ”/> <!-- Match all item elements that are </li></ul></ul><ul><li> descendants of order . --> </li></ul><ul><li></xsl:template> </li></ul>
    15. 15. Location Paths contd.. <ul><li>Match a specific element </li></ul><ul><ul><li>Use […] as a predicate filter to select a particular element </li></ul></ul><ul><ul><li>/AAA/BBB[1] : Select the first BBB child of element AAA       <AAA>            <BBB/>           <BBB/>           <BBB/>           <BBB/>      </AAA> </li></ul></ul><ul><ul><li>/ AAA/BBB[last()] : Select the last BBB child of element AAA </li></ul></ul><ul><li> <AAA>             <BBB/>           <BBB/>            <BBB/> </li></ul><ul><li></AAA> </li></ul>
    16. 16. Location Paths contd.. <ul><li>Match a specific attribute: Use @ attribute to select a particular attribute </li></ul><ul><ul><li>//BBB[@name] : Select BBB elements which have attribute name      <AAA>           <BBB id = &quot;b1&quot;/>           <BBB id = &quot;b2&quot;/>           < BBB name = &quot;bbb&quot;/>           <BBB/>      </AAA> </li></ul></ul><ul><ul><li>//BBB[not(@*)] : Select BBB elements without an attribute      <AAA>           <BBB id = &quot;b1&quot;/>           <BBB name = &quot;bbb&quot;/>            <BBB/>      </AAA> </li></ul></ul><ul><ul><li>//BBB[@name='b1'] : Select BBB elements which have attribute name with value 'b1'      <AAA>           < BBB id = &quot;b1&quot;/>           <BBB name = &quot; bbb &quot;/>      </AAA> </li></ul></ul>
    17. 17. Location Paths contd.. <ul><li>/AAA/BBB/descendant::* Select all descendants of /AAA/BBB       <AAA>           <BBB>                 <DDD>                     <CCC>                          <DDD/>                          <EEE/>                     </CCC>                </DDD>           </BBB>           <CCC>                <DDD/>           </CCC>      </AAA> </li></ul>
    18. 18. Location Paths contd.. <ul><li>The ancestor axis contains the ancestors of the context node; the ancestors of the context node consist of the parent of context node and the parent's parent and so on; thus, the ancestor axis will always include the root node, unless the context node is the root node. </li></ul><ul><ul><li>/AAA/BBB/DDD/CCC/EEE/ancestor::* Select all elements given in this absolute path     <AAA>           <BBB>                <DDD>                     <CCC>                          <DDD/>                          <EEE/>                      </CCC>                </DDD>           </BBB>           <CCC>                <DDD>                     <EEE>                     </EEE>                </DDD>           </CCC>       </AAA> </li></ul></ul>
    19. 19. Location Paths contd.. <ul><li>The ancestor axis contains the ancestors of the context node; the ancestors of the context node consist of the parent of context node and the parent's parent and so on; thus, the ancestor axis will always include the root node, unless the context node is the root node. </li></ul><ul><ul><li>/AAA/BBB/following-sibling::* The following-sibling axis contains all the following siblings of the context node.       <AAA>           <BBB>                <CCC/>                <DDD/>           </BBB>            <XXX>                <DDD>                     <DDD/>                     <FFF/>                </DDD>            </XXX>            <CCC>                <DDD/>            </CCC>      </AAA> </li></ul></ul>
    20. 20. Location Paths contd.. <ul><li>The ancestor axis contains the ancestors of the context node; the ancestors of the context node consist of the parent of context node and the parent's parent and so on; thus, the ancestor axis will always include the root node, unless the context node is the root node. </li></ul><ul><ul><li>//ZZZ/following::* The following axis contains all nodes in the same document as the context node that are after the context node in document order, excluding any descendants and excluding attribute nodes and namespace nodes. .       <AAA>           <BBB>                <ZZZ>                     <DDD/>                                    </ZZZ>                 <FFF>                     <GGG/>                </FFF>           </BBB>            <XXX>                <FFF/>            </XXX>                </AAA> </li></ul></ul>
    21. 21. <ul><li>The ancestor, descendant, following, preceding and self axes partition a document (ignoring attribute and namespace nodes): they do not overlap and together they contain all the nodes in the document. </li></ul><ul><ul><li>       <AAA>            <BBB>                <CCC/>                <ZZZ/>           </BBB>            <XXX>                <DDD>                      <EEE/>                      <FFF>                           <HHH/>                          <GGG>                                 <JJJ>                                    <QQQ/>                               </JJJ>                               <JJJ/>                          </GGG>                           <HHH/>                      </FFF>                </DDD>           </XXX>            <CCC>                <DDD/>           </CCC>       </AAA> </li></ul></ul>Location Paths contd.. //GGG/ancestor::* //GGG/descendant::* //GGG/following::* //GGG/preceding::* //GGG/self::*
    22. 22. Xpath Functions <ul><li>name() returns name of the element </li></ul><ul><ul><li>//*[name()='BBB']: Select all elements with name BBB, equivalent with //BBB </li></ul></ul><ul><li>starts-with(arg1,arg2) function returns true if the first argument string starts with the second argument string </li></ul><ul><ul><li>//*[starts-with(name(),'B')]: Select all elements name of which starts with letter B </li></ul></ul><ul><li>Contains(arg1,arg2) function returns true if the first argument string contains the second argument string </li></ul><ul><ul><li>//*[contains(name(),'C')]: Select all elements name of which contain letter C </li></ul></ul><ul><li>String-length(arg1) function returns the number of characters in the string </li></ul><ul><ul><li>//*[string-length(name()) = 3] Select elements with three-letter name       <AAA>           <Q/>           <SSSS/>           <BB/>            <CCC/>           <DDDDDDDD/>           <EEEE/>       </AAA> </li></ul></ul>
    23. 23. XSLT Stylesheet Elements <ul><li>Matching and selection templates </li></ul><ul><ul><li>xsl:template </li></ul></ul><ul><ul><li>xsl:apply-templates </li></ul></ul><ul><ul><li>xsl:value-of </li></ul></ul><ul><li>Branching elements </li></ul><ul><ul><li>xsl:for-each </li></ul></ul><ul><ul><li>xsl:if </li></ul></ul><ul><ul><li>xsl:choose </li></ul></ul>
    24. 24. XSLT template Element <ul><li>xsl:template match=“ XPath ” </li></ul><ul><ul><li>Defines a template rule for producing output </li></ul></ul><ul><ul><li>Is applied only to nodes that match the pattern </li></ul></ul><ul><ul><li>Invoked by using <xsl:apply-templates/> </li></ul></ul><ul><ul><li>“ .” selects the text value of the current node </li></ul></ul><ul><ul><li><xsl:template match=&quot;/&quot;> </li></ul></ul><ul><li><html><body> </li></ul><ul><li><xsl:apply-templates/> </li></ul><ul><li></body></html> </li></ul><ul><li></xsl:template> </li></ul><ul><li><xsl:template match=“name&quot;> </li></ul><ul><li>Your name is <xsl:value-of select=“.&quot;/> </li></ul><ul><li></xsl:template> </li></ul>
    25. 25. XSLT value-of Element <ul><li>xsl:value-of select=“ expression ” </li></ul><ul><ul><li>Evaluates the expression as a string and outputs the result </li></ul></ul><ul><ul><li>Applied only to the first match </li></ul></ul><ul><li><name prefix=“Mr.”>John Doe</name> </li></ul><ul><li>_________________________________________________ </li></ul><ul><li><xsl:template match=“name&quot;> </li></ul><ul><li>Your name is <xsl:value-of select=“@prefix&quot;/> <xsl:value-of select=“.&quot;/> </li></ul><ul><li></xsl:template> </li></ul>
    26. 26. XSLT for-each Element <ul><li>xsl:for-each select=“ expression ” </li></ul><ul><ul><li>Processes each node selected by the XPath expression(looping) </li></ul></ul><ul><ul><li>Applied only to the first match </li></ul></ul><ul><ul><li>“ .” selects the text value of the current node </li></ul></ul><ul><li><class> </li></ul><ul><li><student>Kim Smith</student> </li></ul><ul><li><student>Jack Black</student> </li></ul><ul><li></class> </li></ul><ul><li>_______________________________________________________ </li></ul><ul><li><xsl:template match=“class&quot;> </li></ul><ul><li><xsl:for-each select=“student&quot;> </li></ul><ul><li> <b><xsl:value-of select=“.&quot;/></b> </li></ul><ul><li></xsl:for-each> </li></ul><ul><li></xsl:template> </li></ul>
    27. 27. XSLT if Element <ul><li>xsl:if test=“ expression ” </li></ul><ul><ul><li>Evaluates the expression and if true applies the template </li></ul></ul><ul><ul><li>No if-else, use choose instead </li></ul></ul><ul><li><xsl:template match=“class&quot;> </li></ul><ul><li><!-- Select the first node in the set. --> </li></ul><ul><li><xsl:if select=“position() = first()&quot;> </li></ul><ul><li> <b><xsl:value-of select=“.&quot;/></b> </li></ul><ul><li></xsl:if> </li></ul><ul><li></xsl:template> </li></ul>
    28. 28. XSLT choose Element <ul><li>xsl:choose </li></ul><ul><ul><li>Selects any number of alternatives </li></ul></ul><ul><ul><li>Use instead of if-else, or switch statement used in other programming languages </li></ul></ul><ul><li><xsl:choose> </li></ul><ul><li><xsl:when test=“not(text())&quot;> </li></ul><ul><li> Missing value! </li></ul><ul><li></xsl:when> </li></ul><ul><li><xsl:otherwise> </li></ul><ul><li> <xsl:value-of select=“.”/> </li></ul><ul><li></xsl:otherwise> </li></ul><ul><li></xsl:choose> </li></ul>
    29. 29. XSL-FO
    30. 30. What is XSL-FO <ul><li>XSL-FO is a language for formatting XML data </li></ul><ul><li>XSL-FO stands for Extensible Stylesheet Language Formatting Objects </li></ul><ul><li>XSL-FO is a W3C Recommendation </li></ul><ul><li>XSL-FO is now formally named XSL(Styling is both about transforming and formatting information. ) </li></ul><ul><li>XSL-FO is an XML-based markup language describing the formatting of XML data for output to screen, paper or other media </li></ul><ul><li>XSL-FO documents are XML files with output information </li></ul>
    31. 31. XSL-FO structure <ul><li>FO document instances represent structures of composed pages: </li></ul><ul><ul><li>Page sequences </li></ul></ul><ul><ul><li>Page regions </li></ul></ul><ul><ul><li>Flows </li></ul></ul><ul><ul><li>Blocks </li></ul></ul><ul><ul><li>Inlines </li></ul></ul><ul><ul><li>Etc. </li></ul></ul><ul><li>FO implementations interpret FO instances to produce final renditions (e.g., pages) </li></ul>
    32. 32. XSL-FO document <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?> </li></ul><ul><li><fo:root xmlns:fo=&quot;http://www.w3.org/1999/XSL/Format&quot;> </li></ul><ul><li><fo:layout-master-set> </li></ul><ul><li><fo:simple-page-master master-name=&quot;A4&quot;> </li></ul><ul><li><!-- Page template goes here --> </li></ul><ul><li></fo:simple-page-master> </li></ul><ul><li></fo:layout-master-set> </li></ul><ul><li><fo:page-sequence master-reference=&quot;A4&quot;> </li></ul><ul><li><!-- Page content goes here --> </li></ul><ul><li></fo:page-sequence> </li></ul><ul><li></fo:root> </li></ul>
    33. 33. Current FO implementations <ul><li>Open Source/Freeware Page regions </li></ul><ul><ul><li>Apache FOP </li></ul></ul><ul><ul><ul><li>Part of Apache project </li></ul></ul></ul><ul><ul><ul><li>Most complete open source implementation </li></ul></ul></ul><ul><ul><ul><li>Currently being rearchitected to be more flexible and functional </li></ul></ul></ul><ul><ul><ul><li>Pure Java </li></ul></ul></ul><ul><ul><li>PassiveTeX </li></ul></ul><ul><ul><ul><li>Implemented in TeX </li></ul></ul></ul><ul><ul><ul><li>Advertised as experimental </li></ul></ul></ul><ul><ul><li>IBM XML FO Composer (XFC) </li></ul></ul><ul><ul><ul><li>Lacks many key features </li></ul></ul></ul><ul><ul><ul><li>Product direction/level of support unclear </li></ul></ul></ul><ul><ul><li>SUN FO Implementation (announced at this conference) </li></ul></ul><ul><ul><li>Others (see www.w3.org/Style/XSL ) </li></ul></ul>
    34. 34. XSL-FO Production process XSLT to FO FO Impl. <mydoc> … <p> Hello </p> … </mydoc> Source XML Document <fo:root> … <fo:block> Hello </fo:block> … </fo:root> Generated FO Instance Hello 1 Rendered Pages
    35. 35. AltovaXML Spy <ul><li>Altova XMLSpy® 2008 is a comprehensive IDE for developing XML projects </li></ul><ul><li>The Enterprise Edition provides an efficient and flexible environment for creating and editing DTDs, XML Schemas, XML files, and XSLT stylesheets. </li></ul><ul><li>Features </li></ul><ul><ul><li>Well-formedness checking and built-in validator </li></ul></ul><ul><ul><li>Schema editing and management </li></ul></ul><ul><ul><li>Built-in XSLT 1.0 and XSLT 2.0 processors </li></ul></ul><ul><ul><li>XSLT Debugger for XSLT 1.0 and XSLT 2.0 </li></ul></ul><ul><ul><li>Transformations of XML documents </li></ul></ul><ul><ul><li>Comparing XML files </li></ul></ul><ul><ul><li>Support for XInclude and XPointer </li></ul></ul>
    36. 36. XMLSPY in action
    37. 37. References <ul><li>Xpath- http://www.zvon.org/xxl/XPathTutorial/Output/example1.html </li></ul><ul><li>XMLSpy Tutorial </li></ul><ul><ul><li>http://www.altova.com/manual2008/XMLSpy/spyenterprise/index.html?xmlspytutorial. htm </li></ul></ul>
    38. 38. A Q &

    ×