Download presentation
Presentation is loading. Please wait.
Published byDulcie Stevens Modified over 9 years ago
1
XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS
2
XP New Perspectives on XML, 2 nd Edition Tutorial 8 2 OBJECTIVES Work with step patterns to create complex node sets Create moded templates so that different code can be applied to the same nodes Access node sets using ID attributes and keys Access secondary source documents
3
XP New Perspectives on XML, 2 nd Edition Tutorial 8 3 WORKING WITH LOCATION PATHS Location path: –Expression that defines a path for the processor to navigate Default navigation direction: –Descendants only
4
XP New Perspectives on XML, 2 nd Edition Tutorial 8 4 STEP PATTERNS Allow processor to navigate node tree in different directions Syntax: axis::node-test[predicate] Sample: child::property[city=”Cutler”]
5
XP New Perspectives on XML, 2 nd Edition Tutorial 8 [age STEP PATTERN AXES Page 456
6
XP New Perspectives on XML, 2 nd Edition Tutorial 8 6 STEP PATTERN AXES CHARTS Page 458
7
XP New Perspectives on XML, 2 nd Edition Tutorial 8 7 WORKING WITH AXES Page 458
8
XP New Perspectives on XML, 2 nd Edition Tutorial 8 8 ELIMINATING DUPLICATES USING STEP PATTERNS Selecting duplicates: –listings/property[city=preceding::property/city] Excluding duplicates: –listings/property[not(city=preceding::property/city)] <xsl:apply-templates select=“listings/property[not(city=preceding::property/city)]”> |
9
XP New Perspectives on XML, 2 nd Edition Tutorial 8 9 SELECTING DUPLICATE CITIES
10
XP New Perspectives on XML, 2 nd Edition Tutorial 8 10 SELECTING FIRST OCCURANCE OF EACH CITY
11
XP New Perspectives on XML, 2 nd Edition Tutorial 8 11 CREATING MODED TEMPLATES Apply different styles to the same node set in the source document Syntax: styles Sample: </xsl: template
12
XP New Perspectives on XML, 2 nd Edition Tutorial 8 12 CALLING A MODED TEMPLATE Syntax: Sample: <xsl:apply-templates select=“listings/property[not(city=preceding::property/city)]” mode=“cityList”> When the XSLT processor encounters this element, it applies the template for the property node set under the cityList mode.
13
XP New Perspectives on XML, 2 nd Edition Tutorial 8 13 USING A MODED TEMPLATE Page 464
14
XP New Perspectives on XML, 2 nd Edition Tutorial 8 14 WORKING WITH IDS Using predicates to match data: –Sample: //property[@rln=”r317087”] –Can be inefficient –Processor searches document for matching node named property with specified rln attribute –Result not stored anywhere Using IDs and keys results in more efficient searches
15
XP New Perspectives on XML, 2 nd Edition Tutorial 8 15 WORKING WITH IDS ID is declared in DTD: –Syntax: or –Sample: Requires the processor to verify that all attributes declared as IDs have unique values All ID values must be unique even if they belong to different elements
16
XP New Perspectives on XML, 2 nd Edition Tutorial 8 16 WORKING WITH IDS Processor creates an index of IDs Xpath function to search the ID index is : –Syntax: id(value) –Sample: id(“r317087”)
17
XP New Perspectives on XML, 2 nd Edition Tutorial 8 17 PROBLEMS WITH IDS When using non-validating parser, id() function returns empty result IDs can only be attributes IDs must be unique across all elements ID values must be valid XML names without spaces or special characters
18
XP New Perspectives on XML, 2 nd Edition Tutorial 8 18 WORKING WITH KEYS Keys: –Are declared in the style sheet, not in the DTD of the source document –Have names as well as values, allowing the style sheet author to create multiple distinct keys –Can be associated with node sets that contain attribute and element values –Can have values that are not limited to XML names
19
XP New Perspectives on XML, 2 nd Edition Tutorial 8 19 CREATING A KEY Syntax: Sample: The rlns key creates an index of all of the rlns attributes in the source document. Attribute of the property element
20
XP New Perspectives on XML, 2 nd Edition Tutorial 8 20 USING KEY() FUNCTION Syntax: key(“name”,“value”) Sample: key(“rlns”,“r317087”) which is equivalent to //property[rln=“r31787”] Keys can point to more than one node –Keys are not required to be unique
21
XP New Perspectives on XML, 2 nd Edition Tutorial 8 21 GENERATING IDS Create a unique id for a node Syntax: generate-id(node-set) Generated ids are constrained to be: –Same for the same node set –Different for different node sets Can be used to test for equality: –generate-id($nodes1)=generate-id($nodes2)
22
XP New Perspectives on XML, 2 nd Edition Tutorial 8 22 ORGANIZING NODES WITH MUENCHIAN GROUPING First formulated by Steve Muench of the Oracle Corporation Uses key() and generate-id() to create groups of nodes Worth considering when you need to organize data from a large source document
23
XP New Perspectives on XML, 2 nd Edition Tutorial 8 23 WORKING WITH MULTIPLE SOURCES Create a reference to another source document within a style sheet: –Syntax: document(object, base) –Example: document(“firms.xml”) Object is either: –URI of another XML source document, or –Node in the current source document that contains the URI of an external document that you want to access –E.g., firms.xml Base: –Defines base URI for resolving relative references –(element containing the URI of the source document Not supported by some browsers Optional
24
XP New Perspectives on XML, 2 nd Edition Tutorial 8 24 WORKING WITH MULTIPLE SOURCES
25
XP New Perspectives on XML, 2 nd Edition Tutorial 8 25 WORKING WITH MULTIPLE SOURCES Referencing elements: –document(“firms.xml”)/firms/city Good practice: –Create a variable for external document –Keep track of context node –Store values to be matched between documents in variables –Detailed example on pages 486-491
26
XP New Perspectives on XML, 2 nd Edition Tutorial 8 26 WORKING WITH MULTIPLE SOURCES
27
XP New Perspectives on XML, 2 nd Edition Tutorial 8 27 PLACING DATA INTO A STYLE SHEET Data element = data placed within a style sheet Some authors use data elements instead of external XML data sources because it is easier to manage a single file rather than several files. Data can be placed directly in style sheet Easier to manage a single file Data should be placed in its own namespace Data must be direct child of
28
XP New Perspectives on XML, 2 nd Edition Tutorial 8 28 PLACING DATA INTO A STYLE SHEET Example: <xsl:stylesheet version=“1.0” xmlns:xsl=“http:/www.w3.org/1999/XSL/Transform” xmlns:data=“http://wwwdata_elements.com> Karen Fawkes (608) 555-3414 karen_fawkes@tofferrealty.com …
29
XP New Perspectives on XML, 2 nd Edition Tutorial 8 29 PLACING DATA INTO A STYLE SHEET To access stylesheet data: –Syntax: document(‘ ’) –Sample: document(‘ ’)/xsl:stylesheet/data:agents/data:agent XSLT processors interpret the empty text string as a relative URL and access the current style sheet file Reference data agent elements
30
XP New Perspectives on XML, 2 nd Edition Tutorial 8 30 INSERTING CODE SNIPPETS Can be used to contain standard heading or banner HTML code placed in XHTML file To use: – Code snippets can be easily modified without having to edit the style sheets directly
31
XP New Perspectives on XML, 2 nd Edition Tutorial 8 31 SUMMARY Step patterns can be used with location paths to search the document in different orders Moded templates are used to define different instructions to be used with the same node pattern IDs and keys are used to create more efficient searches IDs can be generated using generate-id
32
XP New Perspectives on XML, 2 nd Edition Tutorial 8 32 SUMMARY Muenchian grouping uses key() and generate-id() to efficiently group nodes Multiple XML documents can be used by a stylesheet and opened with the document() function Data can be inserted directly into the stylesheet Code snippets can be placed in XHTML files and imported using document()
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.