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
sean anthonySubject: new guy attempting xslt
Author: sean anthony
Date: 03 Aug 2013 04:40 PM
Hi All,

Please bare with me im a network engineer rather than a coder, but have had to turn my hand to this for a project im working on, any chance someone could help me with what I hope will be a simple XSLT question. Given the snippet of xml shown below

[code]
<resources>
<audio>
<file>
<name>file1.mp3</name>
</file>
</audio>

<audio>
<file>
<name>file1_preview.mp3</name>
</file>
</audio>

<audio>
<file>
<name>file1_wav.wav</name>
</file>
</audio>
</resources>
[/code]
I need to find a way to select only the wav file dynamically each time and ignore the other two currently I have the following but clearly it just selects the first one.
[code]
<xsl:for-each select="resources/audio/file">

<MainFile>
<Filename>
<xsl:value-of select="name"/>
</Filename>
</MainFile>

</xsl:for-each>
[/code]
Is it possible to do something like
[code]
<xsl:if test="@name = '*.wav'">
[/code]
Really sorry but im out of my depth here and getting really frustrated as nothing I try works.

Any help would be greatly appreciated

Posttop
Ivan PedruzziSubject: new guy attempting xslt
Author: Ivan Pedruzzi
Date: 05 Aug 2013 10:47 AM

This is verbose but hopefully, more self-explanatory solution

Ivan Pedruzzi
Stylus Studio Team

XML input


<?xml version="1.0"?>
<resources>
<audio>
<file>
<name>file1.mp3</name>
</file>
</audio>

<audio>
<file>
<name>file1_preview.mp3</name>
</file>
</audio>

<audio>
<file>
<name>file1_wav.wav</name>
</file>
</audio>
</resources>


XSLT 1.0 Tranformation

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:variable name="ext" select="'.wav'"/>

<xsl:template match="/">
<MainFile>
<xsl:for-each select="resources/audio/file">
<xsl:variable name="start" select="string-length(name) - string-length($ext) + 1 "/>
<xsl:variable name="file_ext" select="substring(name, $start, 4)"/>
<xsl:if test="$file_ext = $ext">
<Filename start="{$file_ext}">
<xsl:value-of select="name"/>
</Filename>
</xsl:if>
</xsl:for-each>
</MainFile>
</xsl:template>
</xsl:stylesheet>



Result


<?xml version='1.0' ?>
<MainFile>
<Filename start=".wav">file1_wav.wav</Filename>
</MainFile>

 
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.