xp new perspectives on xml, 2 nd edition tutorial 8 1 tutorial 8 creating element groups
TRANSCRIPT
![Page 1: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/1.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
1
TUTORIAL 8
CREATING ELEMENT GROUPS
![Page 2: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/2.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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
![Page 3: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/3.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
3
WORKING WITH LOCATION PATHS
• Location path:– Expression that defines a path for the processor to
navigate
• Default navigation direction:– Descendants only
![Page 4: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/4.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
4
STEP PATTERNS
• Allow processor to navigate node tree in different directions
• Syntax: axis::node-test[predicate]• Sample: child::property[city=”Cutler”]
![Page 5: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/5.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
[age
STEP PATTERN AXES
Page 456
![Page 6: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/6.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
6
STEP PATTERN AXES CHARTS
Page 458
![Page 7: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/7.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
7
WORKING WITH AXES
Page 458
![Page 8: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/8.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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)]”>
<xsl:sort select=“city”/> |
</xsl:apply-templates>
![Page 9: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/9.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
9
SELECTING DUPLICATE CITIES
![Page 10: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/10.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
10
SELECTING FIRST OCCURANCE OF EACH CITY
![Page 11: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/11.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
11
CREATING MODED TEMPLATES
• Apply different styles to the same node set in the source document
• Syntax:<xsl:template match=“node-set” mode=“mode”>
styles
</xsl:template>
• Sample: <xsl:template match=“property” mode=“cityList”>
<xsl:value-of select = “city” />
</xsl: template
![Page 12: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/12.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
12
CALLING A MODED TEMPLATE
• Syntax: <xsl:apply-templates select=“node-set”mode=“mode”>
• 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.
![Page 13: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/13.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
13
USING A MODED TEMPLATE
Page 464
![Page 14: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/14.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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
![Page 15: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/15.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
15
WORKING WITH IDS
• ID is declared in DTD:– Syntax:
<!ATTLIST element attribute ID #REQUIRED> or <!ATTLIST element attribute ID
#IMPLIED>
– Sample: <!ATTLIST property rln ID #REQUIRED>
• 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
![Page 16: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/16.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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”)
![Page 17: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/17.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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
![Page 18: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/18.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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
![Page 19: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/19.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
19
CREATING A KEY
• Syntax: <xsl:key name=“name”match=“node-set” use=”expression”/>
• Sample: <xsl:key name=“rlns”match=“//property” use=“@rln”/>
• The rlns key creates an index of all of the rlns attributes in the source document. Attribute of the
property element
![Page 20: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/20.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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
![Page 21: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/21.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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)
![Page 22: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/22.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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
![Page 23: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/23.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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., <xmlDoc>firms.xml</xmlDoc>
• Base:– Defines base URI for resolving relative references– (element containing the URI of the source document
Not supported by some browsers
Optional
![Page 24: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/24.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
24
WORKING WITH MULTIPLE SOURCES
![Page 25: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/25.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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
![Page 26: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/26.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
26
WORKING WITH MULTIPLE SOURCES
![Page 27: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/27.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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 <xsl:stylesheet>
![Page 28: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/28.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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>
<data:agents>
<data: agent id=“a2140”>
<data:name>Karen Fawkes</data:name>
<data:phone>(608) 555-3414</data:phone>
<data:e-mail>[email protected]</data:email>
…
</data:agents>
![Page 29: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/29.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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
![Page 30: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/30.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 8
30
INSERTING CODE SNIPPETS
• Can be used to contain standard heading or banner• HTML code placed in XHTML file• To use:
– <xsl:copy-of select=“document('heading.html')” />
• Code snippets can be easily modified without having to edit the style sheets directly
![Page 31: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/31.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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
![Page 32: XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS](https://reader035.vdocument.in/reader035/viewer/2022062423/56649f3c5503460f94c5a775/html5/thumbnails/32.jpg)
XP
New Perspectives on XML, 2nd EditionTutorial 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()