Sign Up
Search
Options
search
Chat
Help
News
Log in
Not Logged in
Home
»
Boards
»
Stylus Studio Developer Network
»
XSLT Help and Discussion
»
Newbie prob - Elements with same name as parent...
Topic
Topic Page
1
2
3
4
5
6
7
8
9
Prev Topic
Next Topic
next
Subject:
Newbie prob - Elements with same name as parent...
Author:
eg bert
Date:
26 Sep 2006 10:37 AM
Hi
I'm reading through a 'todo' list generated by an app. called ToDoList
The 'basic' format of the file is: -
<?xml version="1.0" encoding="UTF-8"?>
<todolist>
<task id="1" title="Task 1">
<task id="1a" title="Task 1a"/>
<task id="1b" title="Task 1b"/>
</task>
<task id="2" title="Task 2">
<task id="2a" title="Task 2a"/>
</task>
</todolist>
So each <task> can have multiple sub tasks
I want to read through the file and output all tasks along with their attributes
I have got this far..
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"
xmlns:xs="
http://www.w3.org/2001/XMLSchema"
xmlns:fn="
http://www.w3.org/2004/07/xpath-functions"
xmlns:xdt="
http://www.w3.org/2004/07/xpath-datatypes">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/todolist">
<xsl:for-each select="task">
<xsl:sort order="ascending" select="@title"/>
<BR />Top:
<xsl:value-of select="@title"/>
(<xsl:value-of select="@id"/>)
<BR />
<xsl:value-of select="@comments"/>
<xsl:apply-templates select="task"/>
</xsl:for-each>
</xsl:template>
<xsl:template match="task">
<BR />Sub:
<xsl:value-of select="@title"/>
(<xsl:value-of select="@id"/>)
<BR />
<xsl:value-of select="@comments"/>
</xsl:template>
</xsl:stylesheet>
Output: -
Top: Task 1 (1)
Sub: Task 1a (1a)
Sub: Task 1b (1b)
Top: Task 2 (2)
Sub: Task 2a (2a)
but there must be a better way of doing this without repeating myself
Any help is greatly appreciated
Thanks, Eg.
next
Subject:
Newbie prob - Elements with same name as parent...
Author:
James Durning
Date:
26 Sep 2006 10:48 AM
Add one line to this template:
<xsl:template match="task">
...
...
<xsl:apply-template match="task"/>
</xsl:template>
top
Subject:
Newbie prob - Elements with same name as parent...
Author:
eg bert
Date:
26 Sep 2006 04:45 PM
Thanks very much James, that has picked up all the missing <tasks>.
Is it possible achieve this without outputting the attributes in the first template
<xsl:template match="/todolist">
<xsl:for-each select="task">
<xsl:sort order="ascending" select="@title"/>
+++ This block +++
<BR />Top:
<xsl:value-of select="@title"/>
(<xsl:value-of select="@id"/>)
<BR />
<xsl:value-of select="@comments"/>
--- This block ---
<xsl:apply-templates select="task"/>
</xsl:for-each>
</xsl:template>
so the 'task' templates does all the work?
Thanks Eg.
Topic Page
1
2
3
4
5
6
7
8
9
Prev Topic
Next Topic
Powered by
Stylus Studio
, the world's leading
XML IDE
for
XML
,
XSLT
,
XQuery
,
XML Schema
,
DTD
,
XPath
,
WSDL
,
XHTML
,
SQL/XML
, and
XML Mapping
!
Go to Conference:
Select Conference
Stylus Studio Feature Requests
Stylus Studio Technical Forum
Website Feedback
XSLT Help and Discussion
XQuery Help and Discussion
Stylus Studio FAQs
Stylus Studio Code Samples & Utilities
Stylus Studio Announcements
go
Log In Options
Username:
Password:
Site Map
|
Privacy Policy
|
Terms of Use
|
Trademarks
Stylus Scoop XML Newsletter:
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.