Two Laptop Bag*
The moose likes Product and Other Certifications and the fly likes XML Notes - IV Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Certification » Product and Other Certifications
Bookmark "XML Notes - IV" Watch "XML Notes - IV" New topic
Author

XML Notes - IV

Vibha Verma
Ranch Hand

Joined: Jan 15, 2002
Posts: 107
NOTE: All the elements in angle braces (<>, should be xsl prefixed, means - "xsl colon elementName", I had to remove "xsl colon" part as I was not able to post this message, becuase this part gets converted to some image. So please insert this fragment befoe each element name that is in angle brackets.
XSLT
 Transformation is a process of taking an XML document and turning it into a document in another form
 The process of applying rules to the source document is called transformation
 XSLT is a declarative language
 Programmer has control over the general course of transformation but not on the step-by-step processing of the XSLT processor
 XSLT stylesheet consists of a series of templates
 A template consists of an expression describing the form of some XML fragment and one or more elements specifying what output to generate when the form is matched in the source document.
 Each stylesheet contains a template that matches the root of a document – root template. The XSLT processor begins from this template
 XSLT works its way through the structures in the source document and the context is the node of the parse tree on which the processor if focussing
 An XSLT processor will start from the document element (root node in the tree) but the context changes throughout the course of processing
 Node tests: comment(), text(), node(), processing-instruction()
 XSLT has 37 elements and attributes
 Commonly used elements are categorized as
1. Building stylesheets
2. Controlling transformation output
3. Generating simple output
4. Generating XML
5. Iteration
6. Conditional tests
7. Programming constructs
8. Modularity
 Building stylesheets:
1. <stylesheet> or <transform> - This is the top-most element.
This element must have two attributes - namespace and version
2. <template> - This element has four optional attributes – match, mode, priority, name.
3. <apply-templates> - Two child elements of this element are - <sort> and <with-param>. If this element is used with no attributes, it tells the processor to match the templates in the stylesheet against the current context node.
 Controlling transformation output
1. <preserve-space> attribute is – “elements”
2. <strip-space> attribute is – “elements”
3. <output> This element has 10 optional attributes – method, version, encoding, standalone, indent, omit-xml-declaration, doctype-public, doctype-system, media-type, cdata-section-elements
<output> is an empty element and is the child of the parent element - <stylesheet>
 Generating simple output-
1. <value-of> element. This element has an attribute – “select” (required attribute).
Value of the “select” attribute is an XPath expression.
If the expression returns a collection of nodes, only first node is returned to the output.
2. Making copies: <copy> and <copy-of> elements.
<copy> element copies the current context node to the output. It does not bring along any attributes or child nodes.
<copy-of> element copies current context node and all the nodes under it.
 Generating XML constructs directly:
Five elements for creating major constructs of XML are:
<element>
<attribute>
<comment>
<text>
<processing-instruction>
 Iteration:
<for-each> element. This element operates on a collection of nodes designated by the value of its ‘select’ attribute.
While the element is executed, the nodes in the collection become the current context node.
 Conditional tests:
<if> element. This element does not have any ‘else’ part. This element takes one attribute – ‘test’ which is an XPAth expression
<choose> element. This element has two child elements: <when> and <otherwise>
<choose> has no attributes. <otherwise> is the default part of the choose statement.
 Programming constructs:
1. Declaring Variables:
<variable> element
This element has one required attribute – “name”
It has one optional attribute – “select” (value of this attribute is an XPath expression)
An XSLT variable cannot have its value changed (XSLT is free of sede-effects)
Variables can be local or global
2. Calling templates:
A named template uses <param> element to declare parameters and optionally give them the default values
It is not an error to call a template without the required parameters, although processing may be affected
Parameters can be local or global
Templates can be called from <call-template> or <apply-templates> elements
 Modularity:
<include> and <import> elements
These elements have one required attribute: ‘href’
Both are child elements of <stylesheet>
Both are empty elements
Stylesheet included by <include> has same priority as native template
Templates imported by <import> have lower priority
To apply both native and imported templates, use <apply-imports/> statement
 Some things that CSS can’t do:
1. CSS can’t do computations
2. CSS can’t change the order of elements
3. CSS can’t combine multiple documents
 XSLT
1. XSLT stylesheet should be an XML document
2. XSLT is based on pattern-matching
3. XSLT is free of side effects
4. XSLT uses iteration and recursion instead of loops
 Scenarios where XSLT is preferable:
1. Information is to be rendered on different devices (web, handheld-devices etc)
2. To exchange data between different partners who use different database systems
3. When redesign of the site (say) is done very frequently
4. To combine documents that are in different formats
 XSLT stylesheets use namespace prefixes to process the XML elements they contain. Anything that doesn’t use the xsl namespace prefix is not processed, its written to the result tree.
 DOM, XSLT and XPath all use tree structures to represent data from an XML document.
 Stylesheet is itself an XML document
 The nodes to be processed are represented by context. Initially the context is the root of the XML document but it changes throughout the stylesheet
 Process of transformation is:
1. XSLT stylesheet is parsed and converted into a tree structure
2. XML document is parsed and converted into a tree structure
3. XSLT processor is now at the root of the XML document
4. <template> matches the document root
5. Process begins inside xsl:template where the element is matched with the value of ‘match’ attribute
 Built-in templates have lower priority than any other templates.
 Following are built-in templates:
1. for element and root nodes - <template match=”*|/”>
2. for modes - <template match=”*|/” mode=”x”>
3. for text and attribute nodes - <template match=”text()|@*”>
4. for comment and processing-instruction nodes –
<template match=”comment()|processing-instruction()”/>
This doesn’t do anything
5. for namespace nodes - <template match=”namespace()”/>
This doesn’t do anything.
 Top level elements – elements whose parent is <stylesheet> element
1. <include> and <import>
2. <preserve-space> and <strip-space>
3. <output>
4. <param>
5. <variable>
6. <Key>
7. Other elements are: <decimal-format>, <namespace-alias> and <attribute-set>
 <import> can appear only at the beginning of a stylesheet, while <include> can appear anywhere
 XSLT uses XPath expression in the ‘match’ and ‘select’ attributes
XPath works with parsed version of the XML document, means all the entities are resolved first.
 XSLT processor handles all <sort> elements before it does anything and then it processes <for-each> element
 Attributes of <sort> element are:
1. Select
2. Data-type : It can be text, number or QName
3. Order : It can be ascending, descending
4. Case-order : It can be upper-first, lower-first. This attribute is used only when data-type=”text”
5. lang
 <sort> element can be used within <for-each> or <apply-templates> elements.
Avinash Mulye
Greenhorn

Joined: May 30, 2002
Posts: 22
Fabulous work Vibha.
These sections could become cornerstones !
Avinash
Anitha Lingam
Ranch Hand

Joined: Apr 21, 2002
Posts: 38
That's a Wonderful Work Vibha.
Thanks a Lot
Anitha.
Sri Kor
Ranch Hand

Joined: Sep 03, 2001
Posts: 35
Hi Vibha,
Thank you for your notes. But, it replaced some important info with squares. If you can send me the real document I will try to change it to a pdf file.
Srikanth
srikoritala@yahoo.com


SCJP2<br /> <br /><a href="http://www.primeguru.com" target="_blank" rel="nofollow">Share Your Personal Experiences</a>
Samba Siva Rao Potla
Greenhorn

Joined: May 14, 2002
Posts: 14
Hi ,
Please let me know where can I find XML Notes I to III like the one presented here XML Notes - IV
Regards
Rao
Joseph Hammerman
Ranch Hand

Joined: Jan 19, 2002
Posts: 76
They are further down in this forum
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: XML Notes - IV
 
Similar Threads
XML Notes -II
XML Notes - III
some notes on xml
how to change the xml tag name using xslt
How to handle nested html tags in XSL?