Hi,
I have an XML file created by a third party in which an element with a
simple content model has a text value consisting of 2 parts separated by a
colon, like this
<link>machine:port</link>
Is XSLT capable of parsing the value of a <link> element, to separately
extract the portions before and after the colon?
Regards
David Walker
*David Walker* wrote:
> I have an XML file created by a third party in which an element with a
> simple content model has a text value consisting of 2 parts separated
> by a colon, like this
>
> <link>machine:port</link>
>
> Is XSLT capable of parsing the value of a <link> element, to
> separately extract the portions before and after the colon?
Yes, e.g.:
<xsl:template match="link">
<xsl:choose>
<xsl:when test="contains(., ':')">
<xsl:text>Before = "</xsl:text>
<xsl:value-of select="substring-before(., ':')"/>
<xsl:text>", after = "</xsl:text>
<xsl:value-of select="substring-after(., ':')"/>
<xsl:text>"</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
--
Andrew Urquhart
- CIWAS CSS FAQ: www.css.nu/faq/ciwas-aFAQ.html
- CIWAS Archive: www.tinyurl.com/ysjbm (Google Groups)
- My reply address is invalid, use: www.andrewu.co.uk/contact/
"David Walker" <david@cs.cf.ac.uk> wrote:
>Hi,
>
>I have an XML file created by a third party in which an element with a
>simple content model has a text value consisting of 2 parts separated by a
>colon, like this
>
><link>machine:port</link>
>
>Is XSLT capable of parsing the value of a <link> element, to separately
>extract the portions before and after the colon?
I suppose a question about XSLT is a bit more relevant to a group on
style sheets than to a group like, say, rec.knitting...but really,
what is this doing here?
--
Harlan Messinger
Remove the first dot from my e-mail address.
Veuillez ๔ter le premier point de mon adresse de courriel.
*Harlan Messinger* wrote:
> *David Walker* wrote:
>
> I suppose a question about XSLT is a bit more relevant to a group on
> style sheets than to a group like, say, rec.knitting...but really,
> what is this doing here?
comp.infosystems.www.authoring. /stylesheets/
XSLT; extensible /stylesheet/ language transformations
CSS and XSLT are both stylesheets.
To quote the FAQ:
'At the moment, almost all discussion on this group relates to CSS,
although that might not always be so. This document does not aim
to be a complete tutorial in stylesheets or in CSS.'
Pragmatically speaking comp.text.xml is more applicable at the present
time, but that is not obvious given this newsgroups dual purpose name.
Personally I'd prefer to see a comp.text.xml.xslt group, XSLT being a
subset of XML.
--
Andrew Urquhart
- CIWAS CSS FAQ: www.css.nu/faq/ciwas-aFAQ.html
- Archive: www.tinyurl.com/ysjbm (Google Groups)
- My reply address is invalid, use: www.andrewu.co.uk/contact/
"Andrew Urquhart" <useWebsiteInSignatureToReply@spam.invalid> wrote in
message news:XhDAc.150$in5.136@newsfe1-win...
> *Harlan Messinger* wrote:
>
> comp.infosystems.www.authoring. /stylesheets/
>
> XSLT; extensible /stylesheet/ language transformations
>
> CSS and XSLT are both stylesheets.
> To quote the FAQ:
>
> 'At the moment, almost all discussion on this group relates to CSS,
> although that might not always be so. This document does not aim
> to be a complete tutorial in stylesheets or in CSS.'
>
> Pragmatically speaking comp.text.xml is more applicable at the present
> time, but that is not obvious given this newsgroups dual purpose name.
> Personally I'd prefer to see a comp.text.xml.xslt group, XSLT being a
> subset of XML.
Ah. Understood. I apologize.
"David Walker" <david@cs.cf.ac.uk> wrote in message news:<caug5e$61h$1@news.swman.net.uk>..
.
> Hi,
>
> I have an XML file created by a third party in which an element with a
> simple content model has a text value consisting of 2 parts separated by a
> colon, like this
>
> <link>machine:port</link>
>
> Is XSLT capable of parsing the value of a <link> element, to separately
> extract the portions before and after the colon?
>
> Regards
> David Walker
David,
I suppose there are many ways of achieving that. Here is just one example:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transfor
m">
<xsl:template match="/">
<xsl:apply-templates select="link"/>
</xsl:template>
<xsl:template match="link">
<xsl:variable name="machine" select="substring-before( . , ':' ) "/>
<xsl:variable name="port" select="substring-after( . , ':' ) "/>
<xsl:element name="link">
<xsl:element name="machine">
<xsl:value-of select="$machine"/>
</xsl:element>
<xsl:element name="port">
<xsl:value-of select="$port"/>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
This will transform Your example
<?xml version="1.0" encoding="UTF-8"?>
<link>machine:port</link>
To the following:
<?xml version="1.0" encoding="UTF-8"?>
<link>
<machine>machine</machine>
<port>port</port>
</link>
Is this something like You were after?
Rgds,
<kimmo/>
On Fri, 18 Jun 2004 08:47:42 -0400, Harlan Messinger
<hmessinger.removethis@comcast.net> wrote:
>"David Walker" <david@cs.cf.ac.uk> wrote:
[...]
>I suppose a question about XSLT is a bit more relevant to a group on
>style sheets than to a group like, say, rec.knitting...but really,
>what is this doing here?
This NG is not restricted to only discuss CSS, in fact any stylesheet
technology that is applicable to the www may be discussed here.
http://css.nu/faq/ciwas-mFAQ.html#C02
--
Rex