xslt & xpath. from friday everything in xml is machine readable attributes describe elements, so...

33
XSLT & XPATH

Post on 19-Dec-2015

222 views

Category:

Documents


0 download

TRANSCRIPT

XSLT & XPATH

From Friday

• Everything in XML is machine readable• Attributes describe elements, so does an

element’s place in the tree (context) • XML must be

– Well formed (following XML syntax rules)– Valid (following the rules of the specified DTD[s])

Your resume should look like:

Question

• How can copyright & attribution information be maintained in mashups?

Using Meta Data in Decisions

Or

Why bother with structured markup?

facilitate (re)usability by others

Image an Article:

body

creatorTitle

Featured image?

HTML

RDFa

• Resource Description Framework in [xhtml] attributes

Down Stream Uses of Structure

Currently, FB guesses at what the ‘featured’ image might be when youPost a link. Wouldn’t it be better if tumblr told FB?

Down Stream Uses of Structure

Provenance

Provenance :: where something came from… wouldn’t be nice if tumblr style provenance Was inter-system

Question

• How can copyright & attribution information be maintained in mashups?

XSLT & XPATH

• XPATH = XML query language• XSLT = Translate XML from one schema to

another – Extensible Stylesheet Language Transformations

• XSLT is nothing without XPATH

XPATH

• XSLT• CSS (sorta)• jQuery (sorta)• PHP SimpleXML

Get an RSS File

• Example: nytimes.com• Click on RSS button

– (see the rss being transformed into HTML by the browser)

• View Source

XPATH Selectors

// selects the root element

channelselects the channel element and all of its children

//channel/title / moves down the tree and selects the title element

XPATH Selectors

title/.. selects channel

/. selects the current element (if you're in a loop or something)

XPATH Selectors (attributes)

@ selects nodes attributes

channel/link/@type selects the type attribute in link

XPATH Conditionals

go in []

//channel/item[1] selects the first item

[last()]

[position()<15]

//a[@href="http://www.rpi.edu"]

XPATH Operators & Comparators

+ - * div = < > >= <= or and mod

| is not OR it is used to concatenate sets of elements

XPATH functions

• position()• last()• abs()• floor()• string-length()• name()• http://www.w3.org/TR/xpath-functions/ • http://www.w3schools.com/Xpath/

xpath_functions.asp

XPATH

• Get, run, files from:– http://www.rpi.edu/~gillw3/websys/xslt/files/

• (inspect both, open the RSS file in your browser)

XSLT

• XSL is XML• Transforms XML into XML• We'll transform XML into XHTML

XSLT

• Where does XSLT happen?– server side:

http://us2.php.net/manual/en/book.xsl.php– Client side: FF / Safari / IE

add to the top of your xml document

<?xml-stylesheet type="text/xsl" href="trasnform.xsl"?>

XSLT

• Use XPATH to select (and display) element values

• XSLT value-of• <xsl:value-of select=" XPATH HERE "/>• <xsl:value-of select="channel/item[1]/title"/>

XSLT Control Structures

• If• Choose / when / otherwise• for-each• sort• templates

XSLT if

<xsl:if test="creator=‘someone’">

<li> <xsl:value-of select=“title"/> </li>

</xsl:if>

XSLT Choose

<xsl:choose> <xsl:when test=“XPATH"> output

</xsl:when> <xsl:otherwise>

output </xsl:otherwise> </xsl:choose>

May stack many tests / conditions

XSLT for-each

<xsl:for-each select="xpath here">

<xsl:for-each select="channel/item/"> <li> <xsl:value-of select="title"/> </li></xsl:for-each>

XSLT Sort

<xsl:sort select="title"/><xsl:for-each select="channel/item/"> <xsl:sort select="title"/> <xsl:value-of select="title"/></xsl:for-each>

• Datatype & order attributes:http://www.xml.com/pub/a/2002/07/03/transform.html

XSLT Templates

• Template is a container for a chunk of XSLT• XPATH inside of the template starts where the

match attribute ends

<xsl:template match=“XPATH"> stuff: output & control</xsl:template>

XSLT Templates

• Templates As Functions

<xsl:template match=“channel/item"> <xsl:call-template name=“item-display"/>

<xsl:param name="title"> value </xsl:param>

</xsl:call-template></xsl:template>

In Class

• Grab this XML feed: http://events.rpi.edu/webcache/v1.0/xmlDays/3/list-xml/no--filter.xml

• Using XPATH and XSLT:– Print out a list of events from the feed– Put the summary in an <H3>– Put the description in a <P>– Include a human readable start time & date