XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Cynthia van BovenSubject: How to create xsl which will copy all elements with attributes 2 levels deep
Author: Cynthia van Boven
Date: 18 Jul 2009 06:06 AM
Originally Posted: 18 Jul 2009 06:05 AM
Hi to you all,

I want to create an Excel sheet based on an xsd schema to supply to customers who have no knowledge of xml and want to fill their data in an Excel sheet. I used the document wizard to create an xml out of the xsd and I am now trying to extract all elements and attributes. This is what I've got so far:

<?xml version='1.0' ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="/">
<xsl:for-each select="//*">
<xsl:value-of select="local-name()"/>:<xsl:apply-templates select="current()/text()"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

This works ex<?xml version='1.0' ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="/">
<xsl:for-each select="//*">
<xsl:value-of select="local-name()"/>:<xsl:apply-templates select="current()/text()"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

This works except that it does not copy the attributes. I tried it by changing the for each select to <xsl:for-each select="//*"> but that is not the solution. Find attached also the xml to which I apply the style sheet.

Hope you can help, regards,


Cynthia


UnknownContacts.xml

Posttop
Alberto MassariSubject: How to create xsl which will copy all elements with attributes 2 levels deep
Author: Alberto Massari
Date: 20 Jul 2009 09:22 AM
Hi Cynthia,
you can write this loop inside your loop on "//*":

<xsl:for-each select="@*">
<xsl:text> </xsl:text>
<xsl:value-of select="local-name()"/>: <xsl:apply-templates select="."/>
<xsl:text>
</xsl:text>
</xsl:for-each>

This iterates over all the attributes of the current node.

Hope this helps,
Alberto

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! 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

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
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.